欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中進(jìn)程生命周期的優(yōu)先級(jí)

 更新時(shí)間:2016年01月17日 09:54:27   投稿:hebedich  
這篇文章主要介紹了Android中進(jìn)程生命周期的優(yōu)先級(jí)的相關(guān)資料,需要的朋友可以參考下

學(xué)習(xí)Android最好的途徑當(dāng)然是強(qiáng)大的官方文檔了,其中在Processes and Threads一節(jié)中對(duì)于進(jìn)程生命周期淘汰優(yōu)先級(jí),有著詳細(xì)的介紹。就不給大家轉(zhuǎn)帖了,直接放譯文吧,如下:

Android系統(tǒng)會(huì)盡量維持進(jìn)程的存在,但畢竟資源有限,當(dāng)系統(tǒng)資源告急的時(shí)候會(huì)淘汰一部分進(jìn)程。淘汰順序的憑據(jù)就是系統(tǒng)進(jìn)程的優(yōu)先級(jí)了,優(yōu)先級(jí)越高越不容易被殺死,反之亦然。系統(tǒng)總共為進(jìn)程分了五個(gè)優(yōu)先級(jí),如下

一、前臺(tái)進(jìn)程(進(jìn)程滿足如下任一條件即為前臺(tái)進(jìn)程):

1. 擁有 一個(gè)執(zhí)行了onresume方法正在與用戶交互(獲得焦點(diǎn))的Activity
2. 擁有一個(gè)service,這個(gè)Service跟正在與用戶交互的Activity進(jìn)行了綁定
3. 擁有一個(gè)Service,這個(gè)Service調(diào)用了startForeground()方法
4. 擁有一個(gè)正在執(zhí)行onCreate()、onStart()或者onDestroy()方法中的任意一個(gè)的Service
5. 擁有一個(gè)正在執(zhí)行onReceive方法的BroadcastReceiver

二、可見進(jìn)程:

1. 擁有一個(gè)執(zhí)行了onPause方法,但仍然可見的Activity
2. 擁有一個(gè)Service,這個(gè)Service跟一個(gè)可見的或前臺(tái)的Activity綁定了

三、服務(wù)進(jìn)程:

擁有一個(gè)通過startService方法啟動(dòng)的Service的進(jìn)程

四、后臺(tái)進(jìn)程:

擁有一個(gè)后臺(tái)Activity(onStop方法被調(diào)用)的進(jìn)程

五、空進(jìn)程:

沒有擁有任何活動(dòng)的應(yīng)用組件的進(jìn)程,也就是沒有任何Service和Activity在運(yùn)行

另外,還有一些需要補(bǔ)充的,當(dāng)一個(gè)進(jìn)程滿足多個(gè)進(jìn)程條件時(shí),當(dāng)然是取優(yōu)先級(jí)更高的為準(zhǔn),比如一個(gè)進(jìn)程同時(shí)滿足前臺(tái)進(jìn)程和服務(wù)進(jìn)程的條件,這個(gè)進(jìn)程就是個(gè)前臺(tái)進(jìn)程,這點(diǎn)很好理解。另外,進(jìn)程的優(yōu)先級(jí)也不是一成不變的,而且有時(shí)候會(huì)隨著一些相關(guān)的因素而發(fā)生改變;比如,某進(jìn)程A滿足前臺(tái)進(jìn)程的第二個(gè)條件,進(jìn)程A擁有一個(gè)service,這個(gè)Service跟正在與用戶交互的Activity進(jìn)行了綁定;當(dāng)這個(gè)Activity變成可見狀態(tài)了,進(jìn)程A便不再滿足前臺(tái)進(jìn)程的條件,進(jìn)而因滿足可見進(jìn)程的第二個(gè)條件,進(jìn)程A變成了可見進(jìn)程。總之,在掌握了基本概念之后,需要細(xì)心的分析具體的情況,方能得出正確的判斷。

進(jìn)程優(yōu)先級(jí)的額外說明

1. 系統(tǒng)會(huì)賦予進(jìn)程盡可能高的優(yōu)先級(jí). 例如一個(gè)進(jìn)程既包含已啟動(dòng)的service, 也包含前臺(tái)activity, 則這個(gè)進(jìn)程會(huì)被視為前臺(tái)進(jìn)程.

2. 由于組件之間的依賴性, 進(jìn)程的優(yōu)先級(jí)有可能被提高. 假如進(jìn)程A服務(wù)于進(jìn)程B, 則進(jìn)程A的優(yōu)先級(jí)不能低于進(jìn)程B. 比如, 進(jìn)程A的ContentProvider組件正在服務(wù)于進(jìn)程B的某個(gè)組件, 或者進(jìn)程A的service組件和進(jìn)程B的某個(gè)組件綁定等, 這些情況下, 進(jìn)程A的優(yōu)先級(jí)都不會(huì)低于進(jìn)程B(如果按照優(yōu)先級(jí)規(guī)則, 進(jìn)程A的優(yōu)先級(jí)確實(shí)低于進(jìn)程B, 則系統(tǒng)會(huì)選擇提高進(jìn)程A的優(yōu)先級(jí)到和進(jìn)程B相同).

3. 由于服務(wù)進(jìn)程的優(yōu)先級(jí)高于后臺(tái)進(jìn)程, 因此如果activity需要執(zhí)行耗時(shí)操作, 最好還是啟動(dòng)一個(gè)service來完成. 當(dāng)然, 在activity中啟動(dòng)子線程完成耗時(shí)操作也可以, 但是這樣做的缺點(diǎn)在于, 一旦activity不再可見, activity所在的進(jìn)程成為后臺(tái)進(jìn)程, 而內(nèi)存不足時(shí)后臺(tái)進(jìn)程隨時(shí)都有可能被系統(tǒng)殺死(但是啟動(dòng)service完成耗時(shí)操作會(huì)帶來數(shù)據(jù)交互的問題, 比如耗時(shí)操作需要實(shí)時(shí)更新UI控件的狀態(tài)的話, service就不是一個(gè)好的選擇). 基于同樣的考慮, 在BroadcastReceiver中也不應(yīng)該執(zhí)行耗時(shí)操作, 而應(yīng)該啟動(dòng)service來完成(當(dāng)然, BroadcastReceiver的生命周期過于短暫, 也決定了不能在其中執(zhí)行耗時(shí)操作).

相關(guān)文章

  • Android同步屏障機(jī)制sync barrier實(shí)例應(yīng)用詳解

    Android同步屏障機(jī)制sync barrier實(shí)例應(yīng)用詳解

    這篇文章主要介紹了Android同步屏障機(jī)制sync barrier實(shí)例應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • 修改Android中hosts文件的步驟詳解

    修改Android中hosts文件的步驟詳解

    有朋友問Android怎么修改Hosts?對(duì)于這個(gè)問題,由于手頭并沒有Android設(shè)備,所以只能從網(wǎng)上搜羅了方法并總結(jié)出來,下面這篇文章主要介紹了修改Android中hosts文件的步驟,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • ObjectAnimator屬性動(dòng)畫源碼分析篇

    ObjectAnimator屬性動(dòng)畫源碼分析篇

    今天小編就為大家分享一篇關(guān)于ObjectAnimator屬性動(dòng)畫源碼分析篇,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Android Listview 滑動(dòng)過程中提示圖片重復(fù)錯(cuò)亂的原因及解決方法

    Android Listview 滑動(dòng)過程中提示圖片重復(fù)錯(cuò)亂的原因及解決方法

    android中l(wèi)istview是比較常見的組件,通過本文主要給大家分析Android中Listview滾動(dòng)過程造成的圖片顯示重復(fù)、錯(cuò)亂、閃爍的原因及解決方法,順便跟進(jìn)Listview的緩存機(jī)制,感興趣的朋友一起看下吧
    2016-08-08
  • Android自定義實(shí)現(xiàn)開關(guān)按鈕代碼

    Android自定義實(shí)現(xiàn)開關(guān)按鈕代碼

    經(jīng)??梢钥吹揭恍┻x擇開個(gè)狀態(tài)的配置文件,但是外觀都不多好看。我感覺還是自定義的比較好,下面小編給大家介紹通過Android自定義實(shí)現(xiàn)開關(guān)按鈕代碼,感興趣的童鞋一起學(xué)習(xí)吧
    2016-05-05
  • Android框架學(xué)習(xí)之Volley和Glide詳解

    Android框架學(xué)習(xí)之Volley和Glide詳解

    這篇文章主要給大家介紹了關(guān)于Android框架學(xué)習(xí)之Volley和Glide的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Android獲取點(diǎn)擊屏幕的位置坐標(biāo)

    Android獲取點(diǎn)擊屏幕的位置坐標(biāo)

    這篇文章主要為大家詳細(xì)介紹了Android獲取點(diǎn)擊屏幕的位置坐標(biāo),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android自定義View繪制貝塞爾曲線實(shí)現(xiàn)流程

    Android自定義View繪制貝塞爾曲線實(shí)現(xiàn)流程

    貝塞爾曲線的本質(zhì)是通過數(shù)學(xué)計(jì)算的公式來繪制平滑的曲線,分為一階,二階,三階及多階。但是這里不講數(shù)學(xué)公式和驗(yàn)證,那些偉大的數(shù)學(xué)家已經(jīng)證明過了,所以就只講講Android開發(fā)中的運(yùn)用吧
    2022-11-11
  • Android Mms之:深入MMS支持

    Android Mms之:深入MMS支持

    本篇文章是對(duì)Android中MMS支持進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 基于Android MarginLeft與MarginStart的區(qū)別(詳解)

    基于Android MarginLeft與MarginStart的區(qū)別(詳解)

    下面小編就為大家分享一篇基于Android MarginLeft與MarginStart的區(qū)別(詳解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評(píng)論