轉 Activity的四種啟動模式和onNewIntent()

來源:互聯網
上載者:User

標籤:

轉自 http://blog.csdn.net/linghu_java/article/details/17266603

 在Android中每個介面都是一個Activity,切換介面操作其實是多個不同Activity之間的執行個體化操作。在Android中Activity的啟動模式決定了Activity的啟動運行方式。

  Android總Activity的啟動模式分為四種:

Activity啟動模式設定:        <activity android:name=".MainActivity" android:launchMode="standard" />Activity的四種啟動模式:    1. standard        預設啟動模式,每次啟用Activity時都會建立Activity,並放入任務棧中。    2. singleTop        如果在任務的棧頂正好存在該Activity的執行個體, 就重用該執行個體,否者就會建立新的執行個體並放入棧頂(即使棧中已經存在該Activity執行個體,只要不在棧頂,都會建立執行個體)。    3. singleTask        如果在棧中已經有該Activity的執行個體,就重用該執行個體(會調用執行個體的onNewIntent())。重用時,會讓該執行個體回到棧頂,因此在它上面的執行個體將會被移除棧。如果棧中不存在該執行個體,將會建立新的執行個體放入棧中。     4. singleInstance        在一個新棧中建立該Activity執行個體,並讓多個應用共用改棧中的該Activity執行個體。一旦改模式的Activity的執行個體存在於某個棧中,任何應用再啟用改Activity時都會重用該棧中的執行個體,其效果相當於多個應用程式共用一個應用,不管誰啟用該Activity都會進入同一個應用中。

 

       大家遇到一個應用的Activity供多種方式調用啟動的情況,多個調用希望只有一個Activity的執行個體存在,這就需要Activity的onNewIntent(Intent intent)方法了。只要在Activity中加入自己的onNewIntent(intent)的實現加上Manifest中對Activity設定lanuchMode=“singleTask”就可以。

       onNewIntent()非常好用,Activity第一啟動的時候執行onCreate()---->onStart()---->onResume()等後續生命週期函數,也就時說第一次啟動Activity並不會執行到onNewIntent(). 而後面如果再有想啟動Activity的時候,那就是執行onNewIntent()---->onResart()------>onStart()----->onResume().  如果android系統由於記憶體不足把已存在Activity釋放掉了,那麼再次調用的時候會重新啟動Activity即執行onCreate()---->onStart()---->onResume()等。

     當調用到onNewIntent(intent)的時候,需要在onNewIntent() 中使用setIntent(intent)賦值給Activity的Intent.否則,後續的getIntent()都是得到老的Intent。

轉 Activity的四種啟動模式和onNewIntent()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.