http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中對(duì)“Android的單線程模型&rdq " /> yellow视频免费观看,国产爱豆果冻传媒在线观看视频,老司机深夜福利ae 入口网站

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Android四種Activity的加載模式

  建議首先閱讀下面兩篇文章,這樣才可以更好的理解Activity的加載模式:

  Android的進(jìn)程,線程模型:
  http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中對(duì)“Android的單線程模型”的描述,明白Activity的一些注意事項(xiàng)。

  Android Application Task Activities的關(guān)系
  http://www.cnblogs.com/ghj1976/archive/2011/04/29/2032412.html  尤其要明白 Task 是啥。

  一個(gè)Activty的生命周期

  Activty的生命周期的也就是它所在進(jìn)程的生命周期。

  每一個(gè)活動(dòng)( Activity )都處于某一個(gè)狀態(tài),對(duì)于開發(fā)者來(lái)說(shuō),是無(wú)法控制其應(yīng)用程序處于某一個(gè)狀態(tài)的,這些均由系統(tǒng)來(lái)完成。
  但是當(dāng)一個(gè)活動(dòng)的狀態(tài)發(fā)生改變的時(shí)候,開發(fā)者可以通過(guò)調(diào)用 onXX() 的方法獲取到相關(guān)的通知信息。

  在實(shí)現(xiàn) Activity 類的時(shí)候,通過(guò)覆蓋( override )這些方法即可在你需要處理的時(shí)候來(lái)調(diào)用。

  • onCreate :當(dāng)活動(dòng)第一次啟動(dòng)的時(shí)候,觸發(fā)該方法,可以在此時(shí)完成活動(dòng)的初始化工作。
    onCreate 方法有一個(gè)參數(shù),該參數(shù)可以為空( null ),也可以是之前調(diào)用 onSaveInstanceState ()方法保存的狀態(tài)信息。
  • onStart :該方法的觸發(fā)表示所屬活動(dòng)將被展現(xiàn)給用戶。
  • onResume :當(dāng)一個(gè)活動(dòng)和用戶發(fā)生交互的時(shí)候,觸發(fā)該方法。
  • onPause :當(dāng)一個(gè)正在前臺(tái)運(yùn)行的活動(dòng)因?yàn)槠渌幕顒?dòng)需要前臺(tái)運(yùn)行而轉(zhuǎn)入后臺(tái)運(yùn)行的時(shí)候,觸發(fā)該方法。這時(shí)候需要將活動(dòng)的狀態(tài)持久化,比如正在編輯的數(shù)據(jù)庫(kù)記錄等。
  • onStop :當(dāng)一個(gè)活動(dòng)不再需要展示給用戶的時(shí)候,觸發(fā)該方法。如果內(nèi)存緊張,系統(tǒng)會(huì)直接結(jié)束這個(gè)活動(dòng),而不會(huì)觸發(fā) onStop 方法。 所以保存狀態(tài)信息是應(yīng)該在onPause時(shí)做,而不是onStop時(shí)做。活動(dòng)如果沒(méi)有在前臺(tái)運(yùn)行,都將被停止或者Linux管理進(jìn)程為了給新的活動(dòng)預(yù)留足夠的存儲(chǔ)空間而隨時(shí)結(jié)束這些活動(dòng)。因此對(duì)于開發(fā)者來(lái)說(shuō),在設(shè)計(jì)應(yīng)用程序的時(shí)候,必須時(shí)刻牢記這一原則。在一些情況下,onPause方法或許是活動(dòng)觸發(fā)的最后的方法,因此開發(fā)者需要在這個(gè)時(shí)候保存需要保存的信息。
  • onRestart :當(dāng)處于停止?fàn)顟B(tài)的活動(dòng)需要再次展現(xiàn)給用戶的時(shí)候,觸發(fā)該方法。
  • onDestroy :當(dāng)活動(dòng)銷毀的時(shí)候,觸發(fā)該方法。和 onStop 方法一樣,如果內(nèi)存緊張,系統(tǒng)會(huì)直接結(jié)束這個(gè)活動(dòng)而不會(huì)觸發(fā)該方法。
  • onSaveInstanceState :系統(tǒng)調(diào)用該方法,允許活動(dòng)保存之前的狀態(tài),比如說(shuō)在一串字符串中的光標(biāo)所處的位置等。
    通常情況下,開發(fā)者不需要重寫覆蓋該方法,在默認(rèn)的實(shí)現(xiàn)中,已經(jīng)提供了自動(dòng)保存活動(dòng)所涉及到的用戶界面組件的所有狀態(tài)信息。 

  Activity棧

  上面提到開發(fā)者是無(wú)法控制Activity的狀態(tài)的,那Activity的狀態(tài)又是按照何種邏輯來(lái)運(yùn)作的呢?這就要知道 Activity 棧。

  每個(gè)Activity的狀態(tài)是由它在Activity棧(是一個(gè)后進(jìn)先出LIFO,包含所有正在運(yùn)行Activity的隊(duì)列)中的位置決定的。

  當(dāng)一個(gè)新的Activity啟動(dòng)時(shí),當(dāng)前的活動(dòng)的Activity將會(huì)移到Activity棧的頂部。

  如果用戶使用后退按鈕返回的話,或者前臺(tái)的Activity結(jié)束,在棧上的Activity將會(huì)移上來(lái)并變?yōu)榛顒?dòng)狀態(tài)。如下圖所示:

  一個(gè)應(yīng)用程序的優(yōu)先級(jí)是受最高優(yōu)先級(jí)的Activity影響的。當(dāng)決定某個(gè)應(yīng)用程序是否要終結(jié)去釋放資源,Android內(nèi)存管理使用棧來(lái)決定基于Activity的應(yīng)用程序的優(yōu)先級(jí)。

  Activity狀態(tài)
  一般認(rèn)為Activity有以下四種狀態(tài):

  活動(dòng)的:當(dāng)一個(gè)Activity在棧頂,它是可視的、有焦點(diǎn)、可接受用戶輸入的。Android試圖盡最大可能保持它活動(dòng)狀態(tài),殺死其它Activity來(lái)確保當(dāng)前活動(dòng)Activity有足夠的資源可使用。當(dāng)另外一個(gè)Activity被激活,這個(gè)將會(huì)被暫停。
  暫停:在很多情況下,你的Activity可視但是它沒(méi)有焦點(diǎn),換句話說(shuō)它被暫停了。有可能原因是一個(gè)透明或者非全屏的Activity被激活。
  當(dāng)被暫停,一個(gè)Activity仍會(huì)當(dāng)成活動(dòng)狀態(tài),只不過(guò)是不可以接受用戶輸入。在極特殊的情況下,Android將會(huì)殺死一個(gè)暫停的Activity來(lái)為活動(dòng)的Activity提供充足的資源。當(dāng)一個(gè)Activity變?yōu)橥耆[藏,它將會(huì)變成停止。
  停止:當(dāng)一個(gè)Activity不是可視的,它“停止”了。這個(gè)Activity將仍然在內(nèi)存中保存它所有的狀態(tài)和會(huì)員信息。盡管如此,當(dāng)其它地方需要內(nèi)存時(shí),它將是最有可能被釋放資源的。當(dāng)一個(gè)Activity停止后,一個(gè)很重要的步驟是要保存數(shù)據(jù)和當(dāng)前UI狀態(tài)。一旦一個(gè)Activity退出或關(guān)閉了,它將變?yōu)榇脿顟B(tài)。
  待用: 在一個(gè)Activity被殺死后和被裝在前,它是待用狀態(tài)的。待用Acitivity被移除Activity棧,并且需要在顯示和可用之前重新啟動(dòng)它。

  activity的四種加載模式

  在Android的多activity開發(fā)中,activity之間的跳轉(zhuǎn)可能需要有多種方式,有時(shí)是普通的生成一個(gè)新實(shí)例,有時(shí)希望跳轉(zhuǎn)到原來(lái)某個(gè)activity實(shí)例,而不是生成大量的重復(fù)的activity。加載模式便是決定以哪種方式啟動(dòng)一個(gè)跳轉(zhuǎn)到原來(lái)某個(gè)Activity實(shí)例。

  在Android里,有4種activity的啟動(dòng)模式,分別為:

  • standard: 標(biāo)準(zhǔn)模式,一調(diào)用startActivity()方法就會(huì)產(chǎn)生一個(gè)新的實(shí)例。
  • singleTop: 如果已經(jīng)有一個(gè)實(shí)例位于Activity棧的頂部時(shí),就不產(chǎn)生新的實(shí)例,而只是調(diào)用Activity中的newInstance()方法。如果不位于棧頂,會(huì)產(chǎn)生一個(gè)新的實(shí)例。
  • singleTask: 會(huì)在一個(gè)新的task中產(chǎn)生這個(gè)實(shí)例,以后每次調(diào)用都會(huì)使用這個(gè),不會(huì)去產(chǎn)生新的實(shí)例了。
  • singleInstance: 這個(gè)跟singleTask基本上是一樣,只有一個(gè)區(qū)別:在這個(gè)模式下的Activity實(shí)例所處的task中,只能有這個(gè)activity實(shí)例,不能有其他的實(shí)例。

  這些啟動(dòng)模式可以在功能清單文件AndroidManifest.xml中進(jìn)行設(shè)置,中的launchMode屬性。

  相關(guān)的代碼中也有一些標(biāo)志可以使用,比如我們想只啟用一個(gè)實(shí)例,則可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 標(biāo)志,這個(gè)標(biāo)志表示:如果這個(gè)activity已經(jīng)啟動(dòng)了,就不產(chǎn)生新的activity,而只是把這個(gè)activity實(shí)例加到棧頂來(lái)就可以了。

Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);  intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);  startActivity(intent);          
        

it知識(shí)庫(kù)Android四種Activity的加載模式,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 边做边爱BD免费看片 | 中国xxxxxx片免费播放 | 战狼4在线观看完免费完整版 | 果冻传媒9CM在线观看 | 女张腿男人桶羞羞漫画 | 中文字幕日本久久2019 | 无码人妻少妇色欲AV一区二区 | 国产色精品VR一区二区 | 激情内射亚洲一区二区三区 | 国产人妻人伦精品熟女麻豆 | 亚洲一区精品在线 | 午夜福利免费体检区 | 无人区乱码1区2区3区网站 | 涩涩在线视频 | 高清国产在线观看 | 亚洲国产成人久久一区www妖精 | 摸董事长的裤裆恋老小说 | 桃花免费高清在线观看 | 亚洲中文字幕日产乱码2020 | 国产午夜精品片一区二区三区 | 美女挑战50厘米长的黑人 | 国产精品欧美亚洲 | japanese from色系 JAPANBABES11学生老师 | 91精品免费久久久久久久久 | 成 人 色综合 | 香蕉动漫库 | 91久久99久91天天拍拍 | 夜色福利院在线观看免费 | 成人特级毛片 | 三级黄色在线免费观看 | 小SAO货叫大声点妓女 | 内射一区二区精品视频在线观看 | 在线看片福利无码网址 | 国产精品涩涩涩视频网站 | 男人舔女人的阴部黄色骚虎视频 | 女人把腿张开叫男人桶免费视频 | 99国产精品成人免费视频 | 国产露脸无码A区久久 | 男女疯狂一边摸一边做羞羞视频 | 最近中文字幕mv手机免费高清 | 日本日本熟妇中文在线视频 |