2017-01-20 109 views
0

我已經創建了一個android應用程序,當我關閉應用程序(使用home按鈕)並重新打開應用程序時,它不會再次調用onCreate()。相反,它只是從內存中加載。每次運行android應用程序時都運行on

如何確保每次打開應用程序onCreate()都被執行?


編輯: 應用必須做onCreate()同樣的事情在onResume()

當我將確切的代碼複製到函數onResume()時,它的功能不一樣。

因此,我想完全關閉應用程序(和進程)(或做類似的事情),所以onCreate()總是在重新打開應用程序後被調用。

+1

你可以使用'onstart'? –

+0

android應用程序框架調用Activity的回調方法,如onCreate(),onResume()等。如果您希望每次將應用程序的活動引入前臺時使用onResume()來執行一些代碼。閱讀更多關於這些回調https://developer.android.com/guide/components/activities/activity-lifecycle.html – AADProgramming

+0

我建議你發佈一個單獨的問題,你提供[mcve]並解釋,**在細節**,什麼「它不一樣」的意思。 – CommonsWare

回答

0

我知道你想每次打開應用程序時都會調用onCreate(),但不會。這是因爲當您再次打開應用程序時,您的應用程序仍然處於最新狀態。

  1. 當您在最近存在最近的應用程序中打開應用程序時,您的onStart()被調用。嘗試在onStart()中添加你的邏輯。
  2. 如果您只想每次調用onCreate(),則必須在按住home時從最近刪除。爲此你需要使用下面的活動inManifets使在對activity.Try清單呸變化:

    機器人:clearTaskOnLaunch =「真」

    機器人:finishOnTaskLaunch =「真」

+0

我會嘗試編號2.編號1不是一個選項,因爲onResume中的代碼不能像onCreate(相同的代碼)那樣工作。 – Laura

+0

是的。它會工作..!希望它有幫助。 –

+0

不幸的是,這對我不起作用。 – Laura

-1

只要打電話onResume這將做伎倆。

@Override 
protected void onResume() { 
    super.onResume(); 
    // TODO: do what ever you want 
} 

看一看這個網站:Activity-lifecycle concepts

+2

你打電話錯了超級 – Submersed

+0

我知道這是一種方式,但應用程序在啓動時(onCreate)做的很好,而在重新打開時(onResume)它必須做同樣的事情,但事實並非如此。所以我想讓它在每次應用程序打開時都創建(無論是開始還是重新打開) – Laura

1

當我關閉應用程序(使用home鍵)

這並不「關閉應用程序「,關於」關閉「的任何典型定義。在桌面操作系統中最接近的比喻是將應用程序最小化。

我怎樣才能確保每次打開應用程序onCreate()執行?

你不知道。相反,您使用更合適的其他lifecycle methods,例如onStart(),它將在onCreate()(當活動首次創建時)之後被調用,此時活動從後臺返回到前臺。

+0

我知道它不會關閉應用程序。如果有合適的方法來關閉應用程序(也許它的過程),所以重新打開應用程序將調用創建我想知道它。 我知道我可以覆蓋onstart,但問題是:應用程序在重新打開應用程序時的行爲與啓動應用程序時的行爲不同。 – Laura

+0

@Laura:「如果有合適的方法來關閉應用程序(也許它的過程),所以重新打開應用程序將調用創建我想知道它」 - 這不是一個合適的解決方案,恕我直言。 – CommonsWare

0

我已將System.exit(1)放入onStop()函數中。從最近的應用程序中打開應用程序後,它運行onCreate()

所以這對我有效。

相關問題