一些理解: 通常的講,Android app開始運行時,系統都會爲其建立一個process,裏面包含一個main thread. html
App有機會改變其要運行的process,和其餘app 共享一個process。方法是在AndroidManifest.xml裏指定,有個屬性android:process就是這個用處,定義的粒度能夠是app級,也能夠是四大組件級(activity,service,receiver,content provider) android
Process的生命週期 安全
因app運行而建立,消亡的緣由能夠是本身終止,也能夠是系統安排,系統的安排會看其等級來決定,出發點就是傾向於用戶的優良體驗。Process 分幾個等級,等級越高則由於內存的問題最後被幹掉的機會就越低。1.foreground process > 2.visible process >3.service process>4.Background process>5.Empty process app
Threads ide
系統老是會爲你建立main thread(UI thread),不要block main thread(不然會獲得ANR),也不要從其餘thread去作UI操做。 你能夠建立其餘worker thread去作其餘費時的事情(好比load big bitmap),以避免block main thread.另外從其餘worker thread要處理UI操做,能夠用下列Android其餘的方式,來保證線程安全(thread-safe): post
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable, long) ui
也可用Async task來作上述事情, 出發點都是爲了線程安全。 線程
問題:一個App最多同時有四個Async task? component
IPC(InterProcessCommunication) xml
Android裏,簡單的講就是,這個process 調用的代碼其實真正是在另外一個process裏作的。 調用方只要指定調用的方法以及數據,Android負責透明傳輸以及返回結果。
參考:/docs/guide/components/processes-and-threads.html