2015-05-28 178 views
0

我需要知道用戶何時關閉應用程序,而不是當用戶按下「主頁」按鈕時,而是當用戶在「最近應用程序」菜單關閉應用程序時」。 在這兩種情況下,應用程序轉到onPause方法。有什麼辦法可以區分他們嗎? 我在問,因爲我想在一種情況下從我的數據庫中刪除用戶,而不是在另一種情況下。Android,我如何知道應用程序是否已關閉

+2

你可能永遠不知道它!當進程被終止時,'onDestroy()'不保證被調用! –

+0

[onPause()](http://developer.android.com/reference/android/app/Activity.html#onPause())「當活動進入後臺時,作爲活動生命週期的一部分調用,但具有還沒有被殺死「,換句話說,即使應用程序根本沒有」關閉「,onPause()也會被調用。 –

回答

0

,你可以嘗試使用服務的,在該服務覆蓋onTrimMemory方法

@Override 
public void onTrimMemory(int level) { 
    super.onTrimMemory(level); 
    switch (level) { 
     case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN: 
       //app was closed   
      break; 
    } 

} 

檢查更多的服務

0

我不知道,但也許ActivityLifecycleCallbacks可以幫助你。它需要測試。

例子:

public class YourApplication extends Application { 

    @Override 
    public void onCreate() { 
     lifecycleListener = new ActivityLifecycleListener(); 
     registerActivityLifecycleCallbacks(lifecycleListener); 
    } 

    public class ActivityLifecycleListener implements Application.ActivityLifecycleCallbacks { 

     @Override 
     public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
     } 

     @Override 
     public void onActivityStarted(Activity activity) { 
     } 

     @Override 
     public void onActivityResumed(Activity activity) { 
     } 

     @Override 
     public void onActivityPaused(Activity activity) { 
     } 

     @Override 
     public void onActivityStopped(Activity activity) { 
     } 

     @Override 
     public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
     } 

     @Override 
     public void onActivityDestroyed(Activity activity) { 
     } 
    } 
} 
0

你可以嘗試多個回調,從活動的生命週期相結合。

onUserLeaveHint()可真的有用得到知道,如果活動是在背景或前景

isFinishing():可以卜用了才知道,如果該活動是由一個finish()調用關閉或如果是系統關閉活動以釋放資源

相關問題