android - 如何检测用户是否离开了我的应用程序?

标签 android

我正在开发一个 Android 应用程序,我想检测用户何时通过单击“返回”按钮或“主页”按钮退出我的应用程序。

此外,像 onInit() 这样的事件在我的场景中会很有用,因为我只想让 MyInıt 操作首先启动。

onDestroy() 直到其他应用需要更多内存时才会调用。

最佳答案

注意:这仅适用于您的目标 >= API14


您还可以使用 Application.registerActivityLifecycleCallbacks() 并在任何 Activity 暂停时将延迟的 Runnable (将在用户离开应用程序时调用)发布到 Handler。当 Activity 被创建/启动/恢复时,您从 Handler 中删除该 Runnable。因此,当您在应用程序中导航时,您总是会取消该 Runnable,但如果另一个不是来自您的应用程序的 Activity 被激活 - Runnable 将被调用。

当用户离开我的应用程序时,我用它来注销用户,这里是回调代码:

public class MyApplication extends Application implements Application.ActivityLifecycleCallbacks {

    private Handler handler;
    private Runnable runLogout = new Runnable() {
        @Override
        public void run() {
            //logoutUser()
        }
    };

    @Override
    public void onCreate() {
        super.onCreate();

        registerActivityLifecycleCallbacks(this);
        handler = new Handler(getMainLooper());
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        handler.removeCallbacks(runLogout);
    }

    @Override
    public void onActivityStarted(Activity activity) {
        handler.removeCallbacks(runLogout);
    }

    @Override
    public void onActivityResumed(Activity activity) {
        handler.removeCallbacks(runLogout);
    }

    @Override
    public void onActivityPaused(Activity activity) {
        handler.postDelayed(runLogout, 1000);
    }

    @Override
    public void onActivityStopped(Activity activity) {

    }

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

    }

    @Override
    public void onActivityDestroyed(Activity activity) {

    }
}

但是,Runnable 不会在 Activity 生命周期的上下文中运行,因此要在 Activity 中使用它,您需要设置和检查一些应用程序范围的标志或广播 Intent 。

关于android - 如何检测用户是否离开了我的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6682792/

相关文章:

android - GMail for KitKat 在发送不是图像或视频的附件时崩溃

java - 无法解析 onActivityResult 方法

android - Firebase 权限被拒绝

java - 重复类 com.google.android.exoplayer2.ui.DownloadNotificationHelper

适用于手机和电视的 Android 通用应用程序 (Lollipop)

android - LinearLayout 显示项目自下而上

android - 代号一在捕获音频期间崩溃

android - 从 LoaderManager 获取 "Called doStart when already started"。为什么?

android - 空闲资源繁忙时测试 UI

android - 在 Android 上使用 phonegap 可以在单个事务上运行的 executeSql 语句的数量是否有限制?