簡體   English   中英

我的活動在 onResume() 之前調用 onCreate()

[英]My activity invokes onCreate() before onResume()

我是 Android 的新手,但是在研究了 Activity Lifecycle 之后,我了解到如果我最小化應用程序,它應該調用onPause() ,而當我重新打開它時應該調用onResume() 但是,就我而言,它首先調用onCreate() ,然后調用onResume() 這導致我的小部件和其他變量輸入錯誤的 state。

我的應用程序只有一個活動。 為什么在onResume()之前調用onCreate()方法?

應用程序進程可能會被系統從 onPause() 或 onStop() 殺死,以便在 memory 中為前台的其他應用程序創建空間,在這種情況下,當您重新打開活動時,它將被創建。 在這種情況下, onCreate() -> onStart() -> onResume() 是預期的順序。 當活動不再可見時,將調用 onStop(),因此當您導航回活動時,會發生 onStart() -> onResume()。

更多關於活動生命周期的信息

此外,由於 Android 10 對從后台運行的應用程序有一些限制。 並且“運行前台服務的應用程序被認為是在后台運行”,這就是您所描述的。 這可能就是它被銷毀並且應用程序生命周期從 onCreate() 開始的原因

如果我正確理解了這個問題,那么當您希望恢復它時,聽起來您正在接收一個新的 Activity 實例。 您可以通過設置啟動模式來更改活動的處理方式。

要恢復 Activity(如果它已經存在),您可以將 Manifest 中的launchMode值更改為如下所示:

<activity
        android:name=".MySingleInstanceActivity"
        android:launchMode="singleTask" />

有幾種可用的啟動模式,可能有一種更適合您的項目。 您可以在https://developer.android.com/guide/components/activities/tasks-and-back-stack#TaskLaunchModes閱讀有關任務和啟動模式的更多信息。

暫無
暫無

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

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