我想在我的Android应用中安排简单的本地通知。
当我定位到API 24时,这很好用,但是由于我必须移至最后一个API才能更新我的应用程序,因此我必须更改代码中的某些内容。
当前,我使用WakefulBroadcastReceiver
和简单的Service
发送通知。
每次我要发送通知时,我都会将Intent
和所有信息发送到WakefulBroadcastReceiver
,并在onReceive
方法中创建服务并调用{{1 }}。
startWakefulService(context, service);
确保在触发通知之前不会终止进程,并且服务在后台执行繁重的工作。
但是现在有了最后一个Android版本的新后台限制,我无法在我的应用程序在后台运行时简单地启动服务,因此每次发送通知的尝试都会使我的应用程序崩溃: java.lang.IllegalStateException:不允许启动服务:应用程序在后台。
我还注意到WakefulBroadcastReceiver
现在已过时。
设置闹钟时:
WakefulBroadcastReceiver
收到警报时:(在NotifBroadcastReceiver类中)
Intent broadcastIntent = new Intent(context, NotifBroadcastReceiver.class);
// ...
alarmIntent = PendingIntent.getBroadcast(context, idNotification, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,
millis, interval, alarmIntent);
我的问题:
// onReceive method
startWakefulService(context, service);
// the service then does the heavy job and fires the notification...
(而不是BroadcastReceiver
)发送通知?我已经读过WakefulBroadcastReceiver
,但似乎无法在这种情况下使用它,因为无法保证它会在准确的时间运行。 >
通知是我应用程序中非常重要的一部分,因此,如果不再触发通知,则该应用程序实际上是无用的...
答案 0 :(得分:0)
我最终使用IntentJobService
,因为它与Pre-O的Service
相同,而对于Android O则使用了Jobs
。