我想在constructor
的帮助下显示每日通知。
它正常工作,直到我尝试在重启后使其持久化
我按如下方式创建闹钟:
data class DataObject(val id: Int, val name: String) {
object FromCursorFactory {
fun create(id: Int, context: Context): DataObject {
val name = context.fetchName()
return DataObject(id, name)
}
}
}
这是我的广播接收器:
AlarmManager
编辑: 这是我关闭并打开闹钟时的日志:
if (switch_notif.isChecked()){ //in my activity's code
NotificationReceiver.scheduleAlarms(getApplicationContext()); //allow the notification
} else {
NotificationReceiver.stopNotif(getApplicationContext()); //disable them
}
答案 0 :(得分:3)
也许,alarmUp
总是假的,因为您使用不同的Intent
来比较它们
检查它们是否存在:
boolean alarmUp = (PendingIntent.getBroadcast(context, 100, new Intent(), PendingIntent.FLAG_NO_CREATE) != null);
创建闹钟:
Intent intent1 = new Intent(context, Notification.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
正如您所看到的,Intent
在两个标准中的使用都不同。
尝试检查如下:
Intent tempIntent = new Intent(context, Notification.class);
tempIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
boolean alarmUp = (PendingIntent.getBroadcast(context, 100, tempIntent, PendingIntent.FLAG_NO_CREATE) != null);
顺便说一下
重启期间会破坏所有警报...因此,您应该注册BroadcastReceiver
以接收BOOT_COMPLETED
个事件。这样,当您收到BOOT_COMPLETED
事件时,您就知道您的设备已重新启动且没有警报处于活动状态...然后,您再次将其复制。