錯誤歸因 以及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

推薦內容橫式

本月熱門文章

八炯統戰影片心得 千萬要謹慎 勿掉入金錢陷阱

如何在QNAP NAS 上使用 NVIDIA DIGITS ?

國民黨李煥家族 李慶中李慶珠甲等特考舞弊 李慶華詐領助理補助款 李慶安雙重國籍

中國新病毒 HMPV 人類偏肺病毒 要戴口罩 勤洗手

2025 中華民國政府該怎麼用現有預算做事情?

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

武漢肺炎是什麼? 記得出入公眾場所 要戴口罩 勤洗手

2025年全台罷免行動:抵制親中勢力,捍衛台灣民主

金融犯罪的無聲鬥士:XREX陳梅慧Miffy與虛擬貨幣金流追蹤的犧牲與啟示

統戰影片心得 舔共台灣人做的是會得罪雙方人民的事情

這個網誌中的熱門文章

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