我有一个执行某些数据处理的应用程序,然后在状态栏中通知用户是否找到任何新项目。该过程在设定的时间内作为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);
}
这不是万无一失的,而是我能想到的最好的解决方案。只是想知道这是不好的做法还是有更好的解决方案?感谢。
答案 0 :(得分:0)
只需让你的AlarmReceiver(或它调用的服务)检查应用程序是否可见。您需要在应用程序和AlarmReceiver / Service之间共享一些状态。您可以使用一个基本活动来告诉您在onResume期间处于前台的AlarmReceiver / Service,并且它在onPause期间处于后台。然后AlarmReceiver / Service可以在闹钟响起时简单地检查这种状态,并使用它来决定是否应该显示通知。