http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中對“Android的單線程模型&rdq " /> 香蕉91,国产成人精品久久,国产色视频网站

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

Android四種Activity的加載模式

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

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

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

  一個Activty的生命周期

  Activty的生命周期的也就是它所在進程的生命周期。

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

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

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

  Activity棧

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

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

  當(dāng)一個新的Activity啟動時,當(dāng)前的活動的Activity將會移到Activity棧的頂部。

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

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

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

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

  activity的四種加載模式

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

  在Android里,有4種activity的啟動模式,分別為:

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

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

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

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

it知識庫Android四種Activity的加載模式,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 天天色图| 免费观看一级特黄欧美大片 | 在线中文字幕视频 | 久久蜜桃av | 久久精品免费观看 | 久99久视频| 国产精品777一区二区 | 中文字幕免费视频 | 精品一区二区av | 国产免费观看久久黄av片涩av | 亚洲视频一区二区三区 | 神马久久久久久久久久 | 夜夜草视频 | 色综合一区二区 | 久久大陆 | 性高湖久久久久久久久 | 久久国产99| 一区二区三区欧美在线 | 久久久久欧美 | 免费看的av | 久久91精品 | 久久亚洲综合 | 黄色欧美 | 日韩精品一区二区三区在线播放 | 天堂视频一区 | 嫩草研究影院 | 国产精品久久久久久福利一牛影视 | 午夜精品久久 | 欧美一级网站 | 欧美精品一二三 | 久久久爽爽爽美女图片 | 欧美日韩国产高清 | 男人天堂午夜 | 精产国产伦理一二三区 | 日韩图区 | 91文字幕巨乱亚洲香蕉 | 伊人操| 日韩性在线 | av天空| 欧美国产亚洲一区二区 | 国产精品久久久久久 |