Android程式(Processes)和任務(tasks)的區別
程式(Processes)和任務(tasks)
所有的物件都需要記憶體和一個虛擬機器來存活。一個process就是OS為了你的應用程式存活而開闢的空間,它也是用來讓你的應用程式執行起來的必要條件。
程式可能擁有資原始檔,這些資原始檔都由OS像管理記憶體一樣來管理。也可能擁有網路socket或者可以開啟的檔案。
程式也必須包含至少一個執行執行緒。在Android上,你的程式肯定會包含一個在執行的Dalvik 虛擬機器
然而有一些隱藏的例外情況,一般來說每一個應用程式元件都會與一個程式相連。你的應用程式被自己的程式建立,這是在應用中所有的元件預設的執行方式。但你也可以安排單一某一個元件到另一個程式中,但是我們推薦使用預設執行方式。如果你需要一些元件執行在另一個程式,你可以使用多執行緒來達到相同目的。這種方式比使用多程式更簡單明瞭。
每一個activity的例項都存活在一個確定的程式和一個確定的任務(task)中,這是唯一的相似之處。task只包含若干個activity,經常包含來自不同應用程式的activity。然而,程式包含所有應用程式的執行程式碼和物件。
程式和task比較容易弄混,因為他們兩者在功能上有重疊的部分,它們兩個都是根據應用程式的名字來引用。例如,在書中的例子中當從NerdLauncher中啟動CriminalIntent,作業系統會建立一個CriminalIntent程式和一個新的task。在工作管理員中,這個task是被標籤為CriminalIntent的。
一個activity存活的task可能跟它存活的程式是不同的。當你從CriminalIntent啟動聯絡人應用程式來選擇一個人名。這樣便進入了CriminalIntent的task。然而,它是執行在聯絡人應用程式的程式中的。
也就是說當你按下手機的返回鍵來在不同activity之間導航,切換到哪個程式是不知道的。
可以建立不同的task,也可以在之間切換,但是killing tasks或者替換掉Android預設的taks管理器是不可能的。當你長按Home鍵,會出現預設的taks管理器,然而tasks是不能殺死的。相反的,程式(process)是可以殺死的,所以那些宣告自己可以殺死任務的應用其實是殺死了程式而已。
相關文章
- 【Android】任務和返回棧(tasks and back stack)Android
- macrotask 巨集任務 + microtask 微任務區別Mac
- Introduction to processes and threads(執行緒與程式的區別)thread執行緒
- 10g和11g自動任務的區別
- 行政責任和民事責任,刑事責任的區別
- ask Tom解釋 connect processes sesssions 的區別
- dotnet core系列之Background tasks with hosted services (後臺任務)
- 巨集任務和微任務
- js中的巨集任務和微任務JS
- 程式(Processes)
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- 本地事務和分散式事務的區別分散式
- SEAndroid和普通android的區別Android
- JavaScript巨集任務和微任務JavaScript
- 軟體和程式的區別
- 程式猿和黑客的區別!!!黑客
- Remoting和Web服務的區別REMWeb
- android:layout_gravity 和 android:gravity 的區別Android
- iOS--執行通用周邊角色任務(Performing Common Peripheral Role Tasks)iOSORM
- Event Loop、 巨集任務和微任務OOP
- Android任務和返回棧簡單總結Android
- Android核心和Linux核心的區別AndroidLinux
- Android的padding和margin區別Androidpadding
- android onTouchEvent和setOnTouchListener中onTouch的區別Android
- Android非同步任務Android非同步
- 執行緒和程式的區別執行緒
- 程式中fork和vfork的區別
- 程式和執行緒的區別執行緒
- 程序和任務
- 服務的熔斷和降級的區別
- 低程式碼和無程式碼的區別
- js的setTimeout和Promise—同步非同步和微任務巨集任務JSPromise非同步
- android:gravity和android:layout_gravity區別Android
- Java開發和Android開發的區別JavaAndroid
- android中Invalidate和postInvalidate的區別Android
- 轉android-Service和Thread的區別Androidthread
- Datastage 的任務監控程式--定時以及任務報錯AST
- Android WorkManager 定時任務Android