android 啟動模式和newIntent
1.android 啟動模式主要分為以下四種:
1.standard,這是預設的啟動模式。
用這種啟動方式的話,每一次啟動一個activity,都會重新建立一個activity ,無論堆疊中是否存在相應的activity.每次建立過後的生命週期 會從oncreate 開始重新執行
2.singTop
這種啟動方式的話,首先會判斷啟動的activity是否存在與棧頂,如果存在於棧頂的話,這時候就會直接複用棧頂的activity.
這時候的生命週期,不會呼叫oncreate,和onstart,而會呼叫 onNewIntent.
如果啟動的activity不存在於棧頂的話,就會重新建立activity,建立流程和standard相同
3.singTask.
singTask模式啟動activity的話,首先會判斷堆疊中是否存在例項,如果存在的話,會將,該例項上面的activity全部彈出堆疊,保證當前的例項存在於棧頂,這時候的生命週期依然是呼叫onNewIntent.
如果堆疊中不存在的話,就會重新建立例項,生命週期和standard相同
4.SingleInstance,會在新的任務棧中建立一個新的例項,如果新的activity 繼續使用其他模式啟動activity都將存在於新的堆疊中。而不是存在久的堆疊
2.如何設定啟動模式:
啟動模式的設定主要通過:
Intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
和設定配置檔案的LanchMode兩種方式來設定:
3.newIntent。
當我們使用singTask或者singTop呼叫已經存在堆疊中,或者存在於棧頂的例項的時候,會呼叫onNewIntent.但是,這時候雖然傳遞過來新的Intent,但是我們使用getIntent獲取的資料依然是老資料,所以我們在onNewIntent中需要設定新的intent