【发布时间】:2014-09-25 07:14:24
【问题描述】:
已创建会话注销功能,在以下情况下会发生非活动注销: 1.) 有一段时间不活动 2.) 应用被推送到后台,当用户恢复应用/活动时,活动仍然会执行超时注销 3.) 屏幕超时,进入屏保模式
但是,我想知道当用户在退出/将应用程序推入后台后完全终止应用程序时,是否可能发生非活动注销。如果可能,有哪些可能的实现方式?
这里是sn-p的代码:
(在非活动期间调用的功能):
@Override
public void onStop(){
super.onStop();
//Timer needs to be stopped when user manually pressed BACK button
//Prevent a logout when user press BACK button to stop each activity destroyed from being logged
startTime = System.currentTimeMillis();
Log.i("RootActivity:onResume()","******startTime=******"+startTime);
stopDisconnectTimer();
}
//METHOD USED FOR INACTIVITY LOGOUT
//EMPLOY THE HANDLER METHOD FOR OCCURANCE OF FUTURE FUNCTION: DISCONNECTHANDLER
public static class MyBaseActivity extends Activity {
public static Handler disconnectHandler = new Handler(){
public void handleMessage(Message msg){
}
};
}
private Runnable disconnectCallback= new Runnable(){
@Override
public void run(){
//Get the Resume Time & get difference in Time for Logout
long endTime= System.currentTimeMillis();
Log.i("RootActivity:onResume()","******endTime=******"+endTime);
long diff = endTime - startTime;
long secInt = (diff /1000); //conversion of milliseconds into seconds
Log.i("RootActivity:onRun()","******sectInt=******"+secInt);
if (secInt > Inactivity_Timeout){// SET EXIT SCREEN INTERVAL LOGOUT
IdleLogout();
}
}
};
//METHOD TO CALL ON RESETDISCONNECT WHEN USER ACTIVITY RESUMES
public void resetDisconnectTimer(){
MyBaseActivity.disconnectHandler.removeCallbacks(disconnectCallback);
MyBaseActivity.disconnectHandler.postDelayed(disconnectCallback, Inactivity_Timeout);
}
//METHOD TO CALL ON STOPDISCONNECT WHEN USER PRESS BACK BUTTON
public void stopDisconnectTimer(){
MyBaseActivity.disconnectHandler.removeCallbacks(disconnectCallback);
}
【问题讨论】:
标签: android logout session-timeout