我想在Android应用程序中实现会话管理。我想从应用程序注销,如果15或10分钟不活动。目前我正在使用以下代码进行会话管理。如果超时小于2分钟,它的工作正常。有没有更好的或替代的解决方案?
public static final long DISCONNECT_TIMEOUT = 600000;// 15 min
private Handler disconnectHandler = new Handler() {
public void handleMessage(Message msg) {
}
};
private Runnable disconnectCallback = new Runnable() {
@Override
public void run() {
// Perform any required operation for log out
Intent intent = new Intent(AttendanceActivity.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
};
public void resetDisconnectTimer() {
disconnectHandler.removeCallbacks(disconnectCallback);
disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
}
public void stopDisconnectTimer() {
disconnectHandler.removeCallbacks(disconnectCallback);
}
@Override
public void onUserInteraction() {
resetDisconnectTimer();
}
@Override
protected void onResume() {
super.onResume();
resetDisconnectTimer();
}
@Override
protected void onStop() {
super.onStop();
stopDisconnectTimer();
}
答案 0 :(得分:0)
我假设在活动中你的意思是应用程序不在前台而且没有被用户使用。 有更好的方法来解决这个问题。 1.节省应用程序进入后台的时间(您可以使用活动生命周期回调参考:https://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html)在应用程序打开时检查当前时间和上次查看时间并注销。