activity的啓動模式與newIntent()

很多知識當我們用到的時候,才發覺有多好用。今天需要完成一個功能,創建一個懸浮窗,點擊懸浮窗上按鈕,加載到一個包含webView 的activity,爲了避免activity重複創建。所以使用了activity的啓動模式singleTask,這個方法解決了,activity的重複創建。但是出現一個問題,就是這個activity需要接收一個intent值的。

在這個activity第一次創建的時候,可以使用getInent()來接收這個數據。如果重複啓動activity,getIntent()也不會執行了,如果用getIntent()得到的只能是個老的intent了,這個就導致了,activity的數據沒有更新。無論怎麼點擊懸浮窗上的按鈕,只會啓動棧已經內存在的activity但是,不會更新activity的數據。這時候newIntent()這個方法就出來了!當使用singleTop,或者是singleTask的啓動模式。如果在任務的棧頂正好存在該Activity的實例, 就重用該實例,並調用其oonNewIntent(Intent intent)。這時候得到的intent就是新傳進來的intent,拿到的數據也是新的,對應的。  當調用到onNewIntent(intent)的時候,需要在onNewIntent() 中使用setIntent(intent)賦值給Activity的Intent.否則,後續的getIntent()都是得到老的Intent。 

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