Android Activity單例


在Android開發中經常會碰到當用戶通過菜單操作重新回到之前的某個Activity的時候,希望該Activity能回到之前的狀態,而不是重新創建一遍,比如常用的main Activity。這個時候就需要用到launchMode的單任務屬性了

 

在android中activity的管理是用堆棧的方式。當啟動一個新的activity時,此activity就被push到棧頂並獲得焦點,舊棧頂的activity仍然存在,但是已經stop。當用戶按下back鍵時,將棧頂的activity pop掉。此時新棧頂的activity resume。

 

單任務的activity如下方法進行創建

1、需要在Manifest.xml定義該Activity的launchmode,添加如下屬性

android:launchMode="singleTask"

 launchMode包含4種值。

其中

standard為默認值,通常會在activity開始時創建一個新的實例。

singleTop當啟動一個已經有實例在最前面(即棧頂)的activity時,重用此實例,然后去調用onNewIntent() 函數,創建新的intent。

singleTask當要去一個已經有task啟動的activity的時候,不會去創建新的實例,而是將該task調至最前,已經存在的實例會去調用onNewIntent()函數創建新的intent。而對於之前的控件不會去銷毀,這又節省了創建view的時間

singleInstance當要創建新的activity時會在新的task中創建activity,即一個task中只能存在一個該activity的實例

具體見

http://developer.android.com/reference/android/R.attr.html#launchMode

 

2、在activity中新增

protected void onNewIntent(Intent intent)

 函數。因為在該activity時需要調用此函數

 

參考

onNewIntent的介紹

http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent)

 

task和activity的管理

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

 

activity的生命周期

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM