0

我有一个应用程序进行一些数据处理,然后在状态栏中通知用户是否找到任何新项目。该进程在设定的时间内作为 AlarmManager 运行。一切正常,但理想情况下,我不希望用户在积极使用应用程序时收到通知,这意味着 AlarmManager 基本上应该被暂停。我能想到的唯一解决方案是在主 Activity 的 onResume 方法中不断启动/停止警报,类似于:

@Override
public void onResume()
{ 
      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
      Intent myIntent = new Intent(this, AlarmReceiver.class);
      PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, myIntent, 0);
      alarmManager.cancel(pendingIntent);
      alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 600000, 600000, pendingIntent);
}

这不是万无一失的,但我能想到的最佳解决方案。只是想知道这是不好的做法还是有更好的解决方案?谢谢。

4

1 回答 1

0

只需让您的 AlarmReceiver(或它调用的服务)检查应用程序是否可见。您需要在您的应用程序和 AlarmReceiver/Service 之间共享一些状态。您可以有一个基本 Activity 来告诉您的 AlarmReceiver/Service 在 onResume 期间位于前台,而在 onPause 期间它位于后台。然后,AlarmReceiver/Service 可以在警报响起时简单地检查此状态,并使用它来决定是否应显示通知。

于 2011-09-15T00:01:36.447 回答