簡體   English   中英

從另一個活動返回時再次調用方法OnCreate

[英]Method OnCreate being called again when I return from another activity

想象該應用程序有兩個活動,即A和B。從A,您按下一個啟動B的按鈕。從B,您按下另一個運行setResult(RESULT_CANCEL, new Intent()); finish();按鈕setResult(RESULT_CANCEL, new Intent()); finish(); setResult(RESULT_CANCEL, new Intent()); finish(); 這樣,視圖彈出回到A。

我正在兩台設備上對此進行測試,一台運行Gingerbread(GB),另一台運行Jellybean(JB)。

在GB上,當我將表格B返回A時,不會調用onCreate方法的方法,我認為這意味着未取消分配活動(也未調用onDestroy )。

然而在JB,該方法onCreate 再次調用,我不明白為什么。

最大的問題是,在我的應用程序中, onCreate用於從互聯網加載數據。 這樣,即使已經下載了數據,JB也會始終重新加載該數據。

這里到底發生了什么,為什么它們的行為有所不同?

該框架在需要創建您的Activity的新實例時將調用onCreate() ,這很可能在這里發生。

完全可以接受的是,在您離開它之后,銷毀您的Activity( onStop() ),並在您回來時重新創建它。 無法保證何時會發生這種情況。

通常 ,只有在出現內存壓力時才會發生這種情況,但這會因設備而異(當然取決於操作負載)。 您可以通過在Settings -> Developer Options ”中啟用“不保留活動”來強制這種行為立即發生。

最后,您還可以使用此命令直接查看活動層次結構: adb shell dumpsys activity activities 解碼所有內容都需要一定的經驗,但是應該在任何時間點讓您大致了解Activity Manager的世界觀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM