ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年8月23日 星期二

Android 程式系統

Android 的每個程式都是一個獨立的 process,一個由 jvm 執行的 java code。

java 缺少的就是 IPC,為此,android 設計了一個很大的framework來作到 process 間的通訊。



他把 Android 系統設計類似 message 驅動的系統。
message 在android 系統中稱作 intent。
每個程式就是負責接收/處理 message 的 handler (call back function)。

Android 中,要啟動一個程式,實際上是請 經由 framework 找到要啟動的 程式(class),請 dalvik load 起來,並且把 intent 交給那個 class。

每個程式(class)都可子把 intent 送給任一個 class (無論他是否已經 load 起來 run 了),
一旦另一個程式啟動 ,原來的程式就會被 push 到 task stack 中,等前方的程式結束,或是 back,才會被 pop 出來。

所以 android 的程式不是 由 main 進入,而是由 activity( ) 進入。
就這樣,整個 android 系統裡的 class,可以說是獨立,也可以說是整合在一起。



Task stack 的觀念,當stack 過深時,會發生 stack overflow,

android 設計的 memory 回收機制會把 stack 中XO 得 process 先回收。如果stack pop 到被回收的 task,android 會把他再 load 近來。

Android 的 Home 鍵,就是送 intent 給 HOME Launcher 程式,所以原程式會被 push 到 task stack。

Android 的 Back 鍵,就會把 process 結束(?),把 task stack 的程式 pop 出來。
-- 所以上次是 HOME Launcher 叫起來的程式,按下 back 鍵後,Launcher 會被叫回來。

所以 Android 系統好像沒有一個類似 shell 的 command console 和 program loader 等等。

第一個啟動的program,經由 " 送 intent 給其他 class,把 class run 起來", 串起整個系統...

沒有留言:

標籤

網誌存檔