android singTask 不走oncreat 走onNewInstance
Activity的SingleTask啟動模式:
以"singleTask"方式啟動的Activity,全域性只有唯一個例項存在,因此,當我們第一次啟動這個Activity時,系統便會建立一個新的任務,並且初始化一個這樣的Activity的例項,放在新任務的底部,如果下次再啟動這個Activity時,系統發現已經存在這樣的Activity例項,就會呼叫這個Activity例項的onNewIntent成員函式,從而把它啟用起來。從這句話就可以推斷出,以"singleTask"方式啟動的Activity總是屬於一個任務的根Activity。
在實際的使用過程中,需要注意SingleTask的啟動模式,從字面與解釋理解上面就已經說明,是從新開始一個任務站,那麼該任務棧與一之前的Activity的任務棧就不會存在多大的關聯,今天在書寫程式碼的時候,遇到以下問題,分享以下。
在ActivityA中,startActivityForResult到ActivityB,其中ActivityB設定為SingleTask。
那麼在實際出現的現象為:
ActivityA的onActivityResult將會首先被回撥,然後再執行ActivityB的onCreate函式,也就說無論ActivityB返回什麼內容,在ActivityA中都不會被接收到。
所以在使用SingleTask的方法不要隨便使用。
另外onNewIntent()就是針對SingleTask使用的回撥,當執行呼叫多個Activity物件的時候,會回撥onNewIntent物件。