編輯:關於android開發
“我們不是生產者,我只是大自然的搬運工。”
學習Android最好的途徑當然是強大的官方文檔了,其中在Processes and Threads一節中對於進程生命周期淘汰優先級,有著詳細的介紹。原文如下:
The Android system tries to maintain an application process for as long as possible, but eventually needs to remove old processes to reclaim memory for new or more important processes. To determine which processes to keep and which to kill, the system places each process into an "importance hierarchy" based on the components running in the process and the state of those components. Processes with the lowest importance are eliminated first, then those with the next lowest importance, and so on, as necessary to recover system resources.
上文大致意思就是說Android系統會盡量維持進程的存在,但畢竟資源有限,當系統資源告急的時候會淘汰一部分進程。淘汰順序的憑據就是系統進程的優先級了,優先級越高越不容易被殺死,反之亦然。系統總共為進程分了五個優先級,如下(原文後附筆者融合個人理解的簡譯):
一、前台進程(進程滿足如下任一條件即為前台進程):
1. 擁有 一個執行了onresume方法正在與用戶交互(獲得焦點)的Activity
2. 擁有一個service,這個Service跟正在與用戶交互的Activity進行了綁定
3. 擁有一個Service,這個Service調用了startForeground()方法
4. 擁有一個正在執行onCreate()、onStart()或者onDestroy()方法中的任意一個的Service
5. 擁有一個正在執行onReceive方法的BroadcastReceiver
二、可見進程:
1. 擁有一個執行了onPause方法,但仍然可見的Activity
2. 擁有一個Service,這個Service跟一個可見的或前台的Activity綁定了
三、服務進程:
擁有一個通過startService方法啟動的Service的進程
四、後台進程:
擁有一個後台Activity(onStop方法被調用)的進程
五、空進程:
沒有擁有任何活動的應用組件的進程,也就是沒有任何Service和Activity在運行
另外,還有一些需要補充的,當一個進程滿足多個進程條件時,當然是取優先級更高的為准,比如一個進程同時滿足前台進程和服務進程的條件,這個進程就是個前台進程,這點很好理解。另外,進程的優先級也不是一成不變的,而且有時候會隨著一些相關的因素而發生改變;比如,某進程A滿足前台進程的第二個條件,進程A擁有一個service,這個Service跟正在與用戶交互的Activity進行了綁定;當這個Activity變成可見狀態了,進程A便不再滿足前台進程的條件,進而因滿足可見進程的第二個條件,進程A變成了可見進程。總之,在掌握了基本概念之後,需要細心的分析具體的情況,方能得出正確的判斷。
ImageLoader,androidimageloader1.准備工作 1)導入universal-image-loader-1.9.5.jar到項目中 2)創建M
《Android Studio實用指南》12.18 文本搜索工具 Android Studio中提供了非常方便的搜索工具,可以在編輯器的文件中使用,也可以在andr
Android java層音頻相關的分析與理解(三)調用相關 Android中會有多個應用需要支持音頻的播放。當同一時間內有多個應用需要輸出音頻的時候,到底是全部輸出
聯系人分組標簽懸停滑入滑出的實現方法。,標簽懸停《類似通訊錄分組的Android PinnedSectionListView,分組標簽懸停滑入滑出》 常用的聯系人、通訊錄