2015-05-28 7 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(): может BU знавал, если деятельность была закрыта finish() вызова или, если это система выключая деятельности на свободные ресурсы

Смежные вопросы