android啟動模式

來源:互聯網
上載者:User

Activity載入模式
standard: 
標準模式,一調用startActivity()方法就會產生一個新的執行個體。 對於每一個啟動Intent都會產生一個activity的新執行個體.
跳轉源和目的activity為同一個taskid

singleTop: 
 當activity被設定為singleTop的載入模式時,如果堆棧的頂部已經存在了該Activity,
那麼,它便不會重新建立,而是調用onNewIntent。如果,該Activity存在,但不是在頂部,那麼該Activity依然要重新建立.
跳轉源和目的activity為同一個taskid

singleInstance:
設定為該模式的activity將獨立建立一個 task,並且獨享該taskid.
其所在棧的唯一activity,它會每次都被重用。其它activity不能存在那個task裡.
當發現已經存在一個Task中包含自己的執行個體時,它會調用自己的onNewIntent。
eg: a(taskid=1)->b(sinleInstance,taskid=2)-->c(taskid=1)
如果a在跳轉到b後自己調用了finish()方法,則c的taskid=3
跳轉源和目的activity的taskid一定不相同

singleTask: 
eg: a(taskid=1)->b(singleTask,taskid=1)
設定為singleTask模式的activity並不一定總是新開一個taskid.
當它不是app的啟動面時,將和啟動面taskid相同.
但是將非啟動面設定為該模式要注意資料丟失問題.
因為很有可能是a為歡迎頁面,初始化等耗時工作完成後調用b.並自宮a(finish方法)
這時候當系統回收記憶體後,在home面重新進入程式的時候,a中被初始化的資料將丟失.
因為a已經被自宮,導致初始化資料丟失.
當singleTask模式的Activity啟動時,如果發現在某個Task中已經存在,那麼它會先將該它上部的銷毀,然後調用它的onNewIntent函數。

 

Activity狀態:
活動的:
當一個Activity在棧頂,它是可視的、有焦點、可接受使用者輸入的。Android試圖盡最大可能保持它活動狀態,殺死其它Activity來確保當前活動Activity有足夠的資源可使用。
當另外一個Activity被啟用,這個將會被暫停。

暫停:
在很多情況下,你的Activity可視但是它沒有焦點,換句話說它被暫停了。有可能原因是一個透明或者非全屏的Activity被啟用。
當被暫停,一個Activity仍會當成活動狀態,只不過是不可以接受使用者輸入。
在極特殊的情況下,Android將會殺死一個暫停Activity來為活動的Activity提供充足的資源。
當一個Activity變為完全隱藏,它將會變成停止。"

停止:
當一個Activity不是可視的,它“停止”了。
這個Activity將仍然在記憶體中儲存它所有的狀態和會員資訊。儘管如此,當其它地方需要記憶體時,它將是最有可能被釋放資源的。
當一個Activity停止後,一個很重要的步驟是要儲存資料和當前UI狀態。一旦一個Activity退出或關閉了,它將變為待用狀態。

待用:
在一個Activity被殺死後和被裝載前,它是待用狀態的。待用Acitivity被移除Activity棧,並且需要在顯示和可用之前重新啟動它。

Intent:
Activity的載入模式受啟動Activity的Intent對象中設定的Flag和manifest檔案中Activity的元素的特性值互動控制。

FLAG_ACTIVITY_REORDER_TO_FRONT
如果這個activity已經啟動了,就不產生新的activity,而只是把這個activity執行個體加到棧頂來就可以了。

FLAG_ACTIVITY_NEW_TASK

 

FLAG_ACTIVITY_CLEAR_TOP 
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 
FLAG_ACTIVITY_SINGLE_TOP  

 

android:taskAffinity

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.