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 分钟,这将使您注销。编码愉快 :)