(1 條消息)為什麼Android返回上一頁時不調用OnNewIntent方法??

例如:

A頁面跳轉到B頁面,B頁面finish後返回A頁面,此時不回調A頁面的OnNewIntent方法,如何理解???


關於API有什麼問題,可以先查閱文檔。onNewIntennt文檔如是說

This is called for activities that set launchMode to "singleTop" in their package, or if a client used the FLAG_ACTIVITY_SINGLE_TOP flag when callingstartActivity(Intent). In either case, when the activity is re-launched while at the top of the activity stack instead of a new instance of the activity being started, onNewIntent() will be called on the existing instance with the Intent that was used to re-launch it.

An activity will always be paused before receiving a new intent, so you can count on onResume() being called after this method.

Note that getIntent() still returns the original Intent. You can use setIntent(Intent) to update it to this new Intent.

當Activity的啟動模式是singleTop或者使用FLAG_ACTIVITY_SINGLE_TOP這個標記啟動新的Activity並且Activity棧頂就是待啟動的Activity的時候,會調用原Activity的這個方法;

舉個例子,現在Actvity A在棧頂,假設你在A界面使用

Intent t = new Intent(this, A.class);
t.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(t);

再次啟動A的時候,並不會重新創建一個A的實例;而是直接調用一下`onNewIntent`方法。

在你這種情況下,可以考慮使用startActivityForResult處理結果。


onNewIntent是當前棧頂activity繼續響應intent且flag為singleTop時觸發的

默認是會新建一個activity並將intent傳入,但是設為singleTop後,不會重新創建,而是讓棧頂activity通過onNewIntent來響應。(可以看上面回答的源碼注釋)


因為沒有 newIntent.


推薦閱讀:

Android Studio有哪些值得推薦的主題背景?
Android Studio如何有步驟地解決衝突問題?
Android studio更新到2.2後,編輯module下的build.gradle文件就卡死?
如何優雅地讀logcat?
Android開發 強制退出了任務,後台顯示服務還在,但是程序裡面的Socket卻中斷了?

TAG:Android應用 | Android開發 | Android | Android工程師 | AndroidStudio |