簡體   English   中英

Android會在銷毀后退按鈕后阻止意圖恢復

[英]Android prevent intent restoration after Destroy on back button

我遇到了一個不愉快的問題,我不知道如何正確解決。

場景:

MainActivity有一個方法handleIncomingIntent()

此方法解析傳入的意圖(用於服務或廣播接收器)中的Extras,並根據意圖數據打開“子活動”。 因此,當傳入的Intent具有類型A的數據時,它將啟動startActivity(ActivityA.class),如果類型為B,則將啟動startActivity(ActivityB.class),如果沒有數據,它將保留在MainActivity中

問題是當設備內存不足時,處於ActivityA或ActivityB中時,MainActivity被破壞了。

因此,當使用BackButton時-盡管我在handleIncomingIntent()方法的末尾正在做incomingIntent.removeExtras(KEY)的事實,MainActivity得以還原,並且它的傳入Intent以與處理它之前相同的狀態還原。 因此,結果是-它再次開始了子活動,這是一個循環!

我意識到我可以將一些isIntentConsumed標志存儲到onDestroy()內的內存中,然后將其讀取restoreSavedState()並使用它來消除意圖,因為它已經被消耗了。

我只是覺得必須有一種比我剛剛描述的“創可貼”更好的方法。

親切的問候,帕維爾

你是什​​么意思

問題是當設備內存不足時,處於ActivityA或ActivityB中時,MainActivity被破壞了。 還不清楚,也

因此,當使用“后退”按鈕時

我認為您是在談論活動A或B上的后退按鈕按下事件,如果如此,我建議您在移至A或B活動之后完成MainActivity。 然后在A / B活動中,您應該改用onBackPressed()方法,然后應再次啟動主活動並完成活動A / B。

這樣做可以節省內存不足的設備。 順便說一句,您是否也在真實設備上嘗試過? 如果沒有,請在真實設備上檢查並告知我們。 我希望它對你有用

如果停止的活動由於非正常情況(用戶按下或活動本身完成)以外的系統約束而被破壞,則將調用onSaveInstanceState(Bundle savedInstanceState)方法。 當用戶導航回到這種活動時,將調用onRestoreInstanceState(Bundle savedInstanceState)並將先前保存的捆綁包作為參數傳遞給onRestoreInstanceState()onCreate()

因此,您可以檢查onCreate(Bundle savedInstanceState)的實際參數,如果savedInstanceState != null ,則可以知道該活動已重新創建。 希望有所幫助。

暫無
暫無

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

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