我正在开发一个 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/