-2

我做了一个应用程序。我想在用户退出应用程序或在后台运行的应用程序的特定时间段后自动从应用程序注销。我已经创建了计时器,但它不起作用,因为当应用程序进入onStop()计时器时也会停止。这个问题我该怎么办?

4

2 回答 2

0

您需要创建一个服务来注销并使用带有 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.

于 2016-07-28T06:53:48.680 回答
0

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

于 2016-07-28T06:59:27.273 回答