onNewIntent
需要注意的是:
1、通過Intent啓到一個Activity的時候,就算已經存在一個相同的正在運行的Activity,系統也會創建一個新的Activity實例。爲了不讓Activity實例化多次,我們需要通過在AndroidManifest.xml配置啓動方式。
2、launchMode爲singleTask的時候,通過Intent跳到一個Activity,如果系統已經存在一個實例,系統就會將請求發送到這個實例上,但這個時候----------系統就不會再調用onCreate方法,而是調用onNewIntent方法。
能用到的地方是A-->B-->C-->A,此時onActivityResult就有些複雜了。 例如:
1、點擊 設置密碼(A),跳到 設置密碼頁面(B),輸入密碼;
2、點擊完成 跳到 確定密碼頁面(C),輸入密碼,設置成功後返回到設置頁面(A)並帶回一個狀態,此時(A)中的“設置密碼”變成“修改密碼”;
3、用戶設置過密碼後,此頁面就變成了“修改密碼”的選項
4、C跳到A,這個A我們要用以前棧中已有的,不能再去新建一個A的實例,所以需要在AndroidManifest.xml配置activity的啓動方式以實現單任務模式。每步的跳轉中,我們不能finish掉上一步Activity,否則按返回鍵時,用戶體驗不好。。。。這時就需要onNewIntent了。當然這只是我的一個思路。
首先在AndroidManifest.xml配置activity的啓動方式以實現單任務模式
先看第二個SecondActivity,它需要把值傳到FirstActivity。
再來看FirstActivity
此時沒有走onCreat方法,但是爲了以防萬一,最好在onCreat方法裏也寫上操作,因爲後臺運行的Activity可能在內存過高時被系統殺掉,這時就會走onCreat方法。
轉原文