您可以为此目的扩展Application类。你需要有落实活动生命周期回调是这样的:
public class MyApplication extends Application implements ActivityLifecycleCallbacks {
private boolean userLoggedOff;
private Handler mHandler;
...
@Override
public void onActivityResumed(Activity activity) {
Log.i("Activity Resumed", activity.getLocalClassName());
if (userLoggedoff)
startPasswordActivity()
else {
mHandler.cancelCallbacksAndMessages(null);
userLoggedOff = false;
}
}
@Override
public void onActivityPaused(Activity activity) {
Log.i("Activity Paused", activity.getLocalClassName());
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
userLoggedOff = true;
}
}, 5000);
}
...
}
现在,这里是我们正在努力的是,只要任何活动的onPause()叫我们触发使用处理程序来关闭注销用户延迟事件。只有在任何活动的onResume()在5秒钟内被调用时才能取消该事件(就像您知道的那样,这可以在正常活动切换期间调用,也可以在应用程序来自后台时调用)。
这可能会解决您的问题优雅,我猜。