錯誤歸因 以及Android AIDL

錯誤歸因是一種人常犯的錯誤。

比如A事件和B事件同時發生造成了C結果,但當事者誤認C結果為A事件所造成,其實是B。

--

唉,

工作上我常出現這樣的問題 :(

該好好檢討,

所謂的鬼打牆,就是因為錯誤歸因先起了個頭,

而自己一開始完全搞懂,就會走到錯誤的路上。

--

由於在某個已確定的檔案裡面找不到,就覺得應該是發錯 KeyEvent

然後在自己覺得問題所在的地方放Log檢查

結果什麼都沒得到,

於是覺得是不同層級的問題,

應該不是framework 而是再往下

於是找阿找 去追可能的路徑

推測如下:

EventHub.cpp

負責設定property

KeyCharacterMap.cpp

來load *kcm

KeyCharacterMap.java

這裡負責來抓keycode 以建立keymap

(會先確認device -> 找keycode ->)

KeyEvent.java

根據keymap 發keyevent

--

總之,心裡就想,那我應該要

1. 幫寫一個kcm
2. 找keycode 定義
3. 幫他加一個對應event
4. 接著在policy定義要做的行為

--

但是,走了這一段路之後,

發現要找的東西,不在那個檔案,而是在隔壁 ....

唉 所以一步錯步步錯 @@

--

因為用grep找關鍵字

我先找到了 xxxManager.java

就覺得是這裡了!

疑 怎麼沒有 然後就以為少了什麼 該自己去補起來

但同一個目錄明明就還有 xxx.java

我卻見木不見林

@@



--

另一個觀察切入點

為甚麼要有 xxxManager.java 跟 xxx.java ?

但有的時候又是 xxxService.java 配 xxxManager.java ?



xxxManager.java 通常都是 AIDL (Android Interface Definition Language)

AIDL is an IDL language used to generate code that enables two processes on an Android-powered device.

這應該要想一想 @@

Service 自己是一個process ?@@

還是很多個Service都在一個process內 ? @@

不懂阿不懂

參考資料:




AIDL

在Android中,每個應用程序都可以有自己的進程.在寫UI應用的時候,經常要用到Service.在不同的進程中,怎樣傳遞對象呢?

顯然, Java中不允許跨進程內存共享.因此傳遞對象,只能把對象拆分成操作系統能理解的簡單形式,以達到跨界對象訪問的目的.

在J2EE中,採用RMI的方式,可以通過序列化傳遞對象.在Android中,則採用AIDL的方式.理論上AIDL可以傳遞Bundle,實際上做起來卻比較麻煩.





其他Android 開發文章請見: Android開發豆知識

留言

  1. @@ 工作上需要多累積專業的知識!

    回覆刪除

張貼留言

發表一下意見,互動一下唄!

Google Search

推薦內容橫式

本月熱門文章

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

日本旅行 去東京可以在哪邊買羽球相關用品? WEMBLEY/WINDSOR/梭家/Victoria/Alpen TOKYO

PM到底在做什麼 ? Project Manager, Product Manager 以及 Program Manager的差別

蔣經國時代 1979年 美麗島事件 回顧

快速上手的ComfyUI與Stable Diffusion生成圖片的cheat sheet

柯文哲弊案:關於橘子

ComfyUI搭配各個Stable Diffusion模型版本的介紹、檔案名稱及相應的目錄結構。

許多深藍人士懷念的兩蔣時代

川普第二次擔任美國總統

Netflix 勁爆女子監獄 Orange is the New Black /OINTB 成立了 Poussey Washington Fund 這個基金將會幫助更生人及移民人權問題 !!

這個網誌中的熱門文章

Android應用開發豆知識:利用 adb 安裝 apk 到裝置上

Android 中文輸入法 官方版 ! Gboard - Google 鍵盤 開始支援注音輸入啦

Google Play 推薦Android app 誠徵App排行榜

北京故宮首訪,一窺清宮秘史 大玉兒 & 甄嬛

[家教][社會觀察] 建中教我的事 沒上建中被父母親折磨? 在建中到底是如何 ...

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

Acer ICONIA Smart S300 更新後越來越好 Acer也有出手機?!

[品質控制] 什麼是Sanity test ? 軟體測試常見名詞整理 包含不同部門的測試人員負責範圍

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales