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 起來", 串起整個系統...
ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上
標籤
- 3g (19)
- 工作的備worklog (93)
- 自言自語 (36)
- 草稿 (1)
- 亂亂寫 (8)
- 翻譯 (3)
- administration (76)
- alsa (7)
- android (299)
- apple (5)
- application (42)
- archlinux (1)
- audio (3)
- avr (6)
- backup_restore (2)
- bluetooth (5)
- bookmark (38)
- bootloader (21)
- browser (5)
- cellphone (28)
- command (8)
- Configuration (27)
- debug (7)
- django (1)
- driver (15)
- earphone (1)
- editor (1)
- EFL (1)
- ffmpeg (18)
- Filesystem (4)
- GCC (8)
- Gentoo (1)
- google (1)
- Graphic (3)
- hardware (40)
- hero (7)
- hibernation (9)
- iMX51 (38)
- Info (3)
- Install (30)
- java (4)
- Kernel (102)
- language (2)
- life (2)
- make (11)
- MantainLog (38)
- MCU_P (9)
- memo (8)
- microcontroller (3)
- MINGW (7)
- network (19)
- OpenCL (1)
- OS (11)
- package (3)
- pad (1)
- ProblemAndSolve (15)
- programming (8)
- Python (7)
- raspberry_pi (23)
- SDL (2)
- sensation (13)
- setup (3)
- software_package (36)
- SQL (1)
- suspend (2)
- ToDo (5)
- tool (3)
- ubuntu (1)
- VersionControl (45)
- Virtualization (15)
- VLC (5)
- wheezy (1)
- wifi (3)
- Windows (16)
- xiaomi (1)
- xperia (1)
網誌存檔
-
▼
2011
(244)
-
▼
8月
(27)
- http://crazydaks.com/debugging-in-android-with-tom...
- 在FramebufferNativeWindow.cpp : FramebufferNativeW...
- iMX51 : display. fb & overlay
- onAudioFocusChange
- Android 程式系統
- c string function : strspn 比較字串..
- subversion with proxy, for servers outside
- camera interface, output & de-interlace
- Sony Ericsson opensource site
- Input keyevent : send key by command
- more root source : z4root
- Another root program psneuter
- Android : superuser.apk & su
- android root program : exploid
- 這一段 不錯,紀錄一下,有空再trace..
- postcore_initcall bus_register
- ipu 的部份,suspend 時存起來的 register: /* save double ...
- Android configuration change -- additional Make rules
- Xperia X10 mini pro : PC company download location
- ./include/linux/ipu.h:148:#define IPU_CHAN_ID(ch) ...
- LF - html mode 有作用嗎? 換兩行? br 有效 pre: 大於符...
- Suspend Test funtions in Kernel
- mc13892 是給 embedded controller 用的 power controller...
- Editor : Geany : Change Editor's Color scheme
- kernel, suspend - pm.c : interface of module and ...
- linux source : irq
- worklog - android atheros sd wifi
-
▼
8月
(27)
沒有留言:
張貼留言