1. 程式人生 > >android 啟動模式和newIntent

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