Android 新建activity的intent 的flag

如果在兩個activity 之間 可以直接跳轉並且可以相應返回鍵。那麼,當兩者多次相互跳轉之後,再相應返回鍵,那麼結果就是兩個activity交替出現。

但,實際上,你想要的效果是,倆個activity退出而已,怎麼會出現那麼多次。

原因是intent 的flag

這篇文章裏有解釋

http://www.eoeandroid.com/thread-263361-1-1.html

Activity棧來管理Activity的東西,其實這個東西就是task,task以棧先進後出的管理方式來管理其中的Activity。每當一個程序啓動的時候,android系統就會爲這個程序創建一個task來管理這個程序用到的activity

一個程序啓動後系統會爲這個程序分配一個task供其使用,另外同一個task裏面可以擁有不同應用程序的activity。那麼,同一個程序能不能擁有多個task?這就涉及到加載activity的四種模式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity標籤的屬性launchMode中設置該activity的加載模式。簡述下這四種模式的區別:
1、standard模式:默認的模式,以這種模式加載必定會構造一個新的Activity實例放到目標task中的activity棧頂,不管當前task的棧頂是什麼情況。
2、singleTop模式:這種模式與standard模式類似,區別在於加載activity會多個判斷步驟。判斷需要加載的新activity與當前task棧頂的activity是不是同一個,相同的話就不再構造新的activity,並調用這個activity的newInstance()方法,不相同就還是會構造新的activity放到棧頂。
3、singleTask模式:這種模式下,會創建一個新的task來加載這個activity,並且這個task中只允許存在一個Activity的一個實例(以後可以加載其他activity的實例)。
4、singleTask模式:這種模式下,會創建一個新的task,並且這個task中只能存在一個需要加載的這個Activity實例,即除了這個activity之外,不允許其他activity。
從這四種Activity的加載模式中大概可以看出同一個程序可以擁有多個task。

=====

如果想跳轉之後,不在保存前面那個activity,那就finish就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章