我尝试使用AlarmManager
设置活动,但我只是在应用程序打开时收到通知。我尝试使用set
,setExact
和setExactAndAllowWhileIdle
,但没有运气:当我关闭应用时,即使我没有关闭屏幕,我也不会得到通知。
添加通知
public void addNotification(Task task) {
Intent intent = new Intent(context, NotificationPublisher.class);
intent.putExtra("NOTIFICATION",getNotification(task));
intent.putExtra("TASK_ID",(int)task.getTaskId());
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if(DateUtility.isTimePast(new Time(task.getNotificationTime()))) // if missed, notify now
mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, today.getTime()+3000, pendingIntent);
else
mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, task.getNotificationTime(), pendingIntent);
}
通知发布者,由警报管理员调用
public class NotificationPublisher extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = intent.getParcelableExtra("NOTIFICATION");
int id = intent.getIntExtra("TASK_ID", 0);
if(notification!=null&&id!=0)
notificationManager.notify(id, notification);
}
}
我的自定义课程或方法并不涉及,因为我的应用尚未关闭时,我会收到正确的通知。
我在启动时再次使用RECEIVE_BOOT_COMPLETED
设置闹钟,通知我只有迟到的通知(如果我的手机在活动期间关闭,我会在下次启动时收到通知)。因此警报设置正确,但几秒钟后它就会死亡。谢谢你的帮助!