Android,我如何知道应用程序是否已关闭

时间:2015-05-28 13:11:21

标签: android

我需要知道用户何时关闭应用程序,而不是当用户按下" home"按钮,但是当用户在"最近的应用程序菜单"中关闭应用程序时。 在这两种情况下,应用程序转到onPause方法。有没有办法告诉他们分开? 我问是因为,我想在一种情况下从我的数据库中删除用户,而不是在另一种情况下。

3 个答案:

答案 0 :(得分:1)

您可以尝试组合活动生命周期中的多个回调。

onUserLeaveHint()可以非常有用,可以了解活动是在背景中还是前景

isFinishing():可以用于了解活动是否已被finish()电话关闭,或者系统是否关闭活动以释放资源

答案 1 :(得分:0)

您可以尝试使用服务,在此服务中覆盖onTrimMemory方法

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

}

查看有关服务的更多信息

答案 2 :(得分: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) {
        }
    }
}