我正在处理大量活动,我需要在我的应用处于非活动状态时实现自动超时。我的情况是当我登录我的计时器需要启动,如果我在登录后没有做任何事情。
我的计时器需要从与应用程序的最后一次交互开始,
我的计时器需要在我的应用程序进入后台并屏蔽关闭案例时启动 当我从应用程序注销时,我的计时器需要停止。
我尝试使用以下代码:
public class MyBaseActivity extends Activity {
public static final long DISCONNECT_TIMEOUT = 300000; // 5 min = 5 * 60 * 1000 ms
private Handler disconnectHandler = new Handler(){
public void handleMessage(Message msg) {
}
};
private Runnable disconnectCallback = new Runnable() {
@Override
public void run() {
// Perform any required operation on disconnect
}
};
public void resetDisconnectTimer(){
disconnectHandler.removeCallbacks(disconnectCallback);
disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
}
public void stopDisconnectTimer(){
disconnectHandler.removeCallbacks(disconnectCallback);
}
@Override
public void onUserInteraction(){
resetDisconnectTimer();
}
@Override
public void onResume() {
super.onResume();
resetDisconnectTimer();
}
@Override
public void onStop() {
super.onStop();
stopDisconnectTimer();
}
}
但是当我的应用程序进入后台或应用程序屏幕关闭时,此代码无法启动我的计时器,在这些情况下计时器停止。 请给我你宝贵的建议,帮助我节省时间。谢谢。
答案 0 :(得分:0)
需要检测应用是否处于后台状态
@Override
public void onStop() {
if (Constant.isAppIsInBackground(this)) {
stopDisconnectTimer();
resetDisconnectTimer();
}else {
stopDisconnectTimer();
}
super.onStop();
//stopDisconnectTimer();
}
这里的isAppisBackground()是检测背景状态的方法