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)是可以殺死的,所以那些宣告自己可以殺死任務的應用其實是殺死了程式而已。
相關文章
- 微任務和宏任務有什麼區別?
- macrotask 巨集任務 + microtask 微任務區別Mac
- 程式(Processes)
- dotnet core系列之Background tasks with hosted services (後臺任務)
- Android核心和Linux核心的區別AndroidLinux
- Android之android:theme設定在Application 和 Activity的區別AndroidAPP
- Android之Intent的setClass和setClassName的區別AndroidIntent
- Java開發和Android開發的區別JavaAndroid
- Android 開發中 getContext 和 getActivity的區別AndroidContext
- js中的巨集任務和微任務JS
- 巨集任務和微任務
- 本地事務和分散式事務的區別分散式
- 程式中fork和vfork的區別
- SpringCloud分散式微服務b2b2c電子商務-定時任務(Scheduling Tasks)SpringGCCloud分散式微服務
- Android Studio之Gradle和Gradle外掛的區別AndroidGradle
- 低程式碼和無程式碼的區別
- Android WorkManager 定時任務Android
- JavaScript巨集任務和微任務JavaScript
- Android非同步、延遲和定時任務的簡易用法Android非同步
- Android之drawable和mipmap目錄區別Android
- 程式和計劃任務_______GongWei1997Go
- Android的AsyncTask非同步任務淺析Android非同步
- Android 中的定時任務排程Android
- 小程式和 Vue 的區別 [入門]Vue
- 程式入口點EP和OEP的區別
- Android主專案和Module中R類的區別Android
- js的setTimeout和Promise—同步非同步和微任務巨集任務JSPromise非同步
- 服務的熔斷和降級的區別
- Event Loop、 巨集任務和微任務OOP
- Android中非同步任務(AsyncTask)Android非同步
- Android之工程目錄lib和libs區別Android
- ../和./和/的區別
- Android之getApplication()、getApplicationContext的區別AndroidAPPContext
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- 程序和任務
- ADO.NET 1.1和2.0事務的區別
- SOA架構和微服務架構的區別架構微服務