Android 注销计时器
Android Logout timer
我做了一个应用程序。当用户在后台退出应用程序或应用程序 运行 时,我想在特定时间段后自动退出应用程序。我已经创建了计时器,但它不起作用,因为当应用程序进入时 onStop()
计时器也会停止。这个问题我该怎么办?
您需要创建一个服务以注销并使用带有 PendingIntent 的 AlarmManager 以便该服务在特定时间段后启动。这是一个示例代码:
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent m_intent = new Intent(this, YourService.class);
PendingIntent pi = PendingIntent.getService(this, 2, m_intent, 0);
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timePeriod, pi);
将注销代码放入 YourService
。
让你所有的 Activities
扩展一个 BaseActivity
。然后在这个 BaseActivity
中声明 pausedMillis 参数:
private long pausedMillis;
之后覆盖 onStop
方法:
@Override
protected void onStop() {
super.onStop();
pausedMillis = Calendar.getInstance().getTimeInMillis();
}
最后覆盖onResume
方法:
@Override
public void onResume(){
super.onResume();
try {
long currentMillis = Calendar.getInstance().getTimeInMillis();
if ( !(this instanceof LoginActivity) && currentMillis - pausedMillis > 1000 * 60 * 3 ) {
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
Toast.makeText(BaseActivity.this, getString(R.string.logout_string), Toast.LENGTH_LONG).show();
}
} catch (Exception e){
e.printStackTrace();
}
}
如果您的应用程序在后台运行超过 3 分钟,这将使您注销。编码愉快 :)
我做了一个应用程序。当用户在后台退出应用程序或应用程序 运行 时,我想在特定时间段后自动退出应用程序。我已经创建了计时器,但它不起作用,因为当应用程序进入时 onStop()
计时器也会停止。这个问题我该怎么办?
您需要创建一个服务以注销并使用带有 PendingIntent 的 AlarmManager 以便该服务在特定时间段后启动。这是一个示例代码:
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent m_intent = new Intent(this, YourService.class);
PendingIntent pi = PendingIntent.getService(this, 2, m_intent, 0);
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timePeriod, pi);
将注销代码放入 YourService
。
让你所有的 Activities
扩展一个 BaseActivity
。然后在这个 BaseActivity
中声明 pausedMillis 参数:
private long pausedMillis;
之后覆盖 onStop
方法:
@Override
protected void onStop() {
super.onStop();
pausedMillis = Calendar.getInstance().getTimeInMillis();
}
最后覆盖onResume
方法:
@Override
public void onResume(){
super.onResume();
try {
long currentMillis = Calendar.getInstance().getTimeInMillis();
if ( !(this instanceof LoginActivity) && currentMillis - pausedMillis > 1000 * 60 * 3 ) {
Intent intent = new Intent(this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
Toast.makeText(BaseActivity.this, getString(R.string.logout_string), Toast.LENGTH_LONG).show();
}
} catch (Exception e){
e.printStackTrace();
}
}
如果您的应用程序在后台运行超过 3 分钟,这将使您注销。编码愉快 :)