Java Alarmmanager没有';重启后第二天无法工作
这就是我制造警报的方式Java Alarmmanager没有';重启后第二天无法工作,java,android,notifications,alarmmanager,alarm,Java,Android,Notifications,Alarmmanager,Alarm,这就是我制造警报的方式 pendingent alarmIntent=pendingent.getBroadcast(getContext(),1,intent,pendingent.FLAG_UPDATE_CURRENT); AlarmManager报警=(AlarmManager)getContext().getSystemService(报警服务); Calendar startTime=Calendar.getInstance(); startTime.set(Calendar.HOUR
pendingent alarmIntent=pendingent.getBroadcast(getContext(),1,intent,pendingent.FLAG_UPDATE_CURRENT);
AlarmManager报警=(AlarmManager)getContext().getSystemService(报警服务);
Calendar startTime=Calendar.getInstance();
startTime.set(Calendar.HOUR\u OF_DAY,hourOfDay);
startTime.set(Calendar.MINUTE,MINUTE);
开始时间设置(日历秒,0);
if(startTime.getTimeMillis()
我在BroadcastReceiver中调用的方法:
private void startAlarm(上下文){
Intent maintent=新的Intent(上下文,MainActivity.class);
PendingEvent contentIntent=PendingEvent.getActivity(上下文,1,mainIntent,PendingEvent.FLAG_UPDATE_CURRENT);
通知经理我的通知经理=
(NotificationManager)context.getSystemService(context.NOTIFICATION\u服务);
Notification.Builder=new Notification.Builder(上下文);
builder.setSmallIcon(R.drawable.l_活动)
.setContentTitle(context.getString(R.string.morn_title))
.setContentText(context.getString(R.string.morn_text))
.setWhen(System.currentTimeMillis())
.setContentIntent(contentIntent);
myNotificationManager.notify(1,builder.build());
}
所以我遇到了这样的问题。当我把闹钟设置为9:51,我的时间是10:00时,闹钟不响了。添加后
if(startTime.getTimeMillis()
闹钟工作正常,但当我重新启动手机时,它就不工作了。我将试着用一个例子来解释:
我的电话时间是23:50。我将闹钟设置为00:05,然后重新启动手机,一直等到00:05。警报也不会响。但是如果我不重新启动我的手机-一切正常。还有一件事:如果我没有设置过去的时间(例如,我的时间是22:00,我将时间设置为22:05,重新启动手机,它就会工作),那么重新启动手机不会有问题。即使在重新启动后,AlarmManager也不会持续存在。 通过创建BroadCastReceiver使AlarmManager在重新启动后工作,该接收器将在设备启动完成时启动报警 使用
捕获BroadCastReceiver类中的启动活动
您需要在AndroidManifest.xml中添加上述行,如下所示
<receiver android:name=".StartUpReceiver" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
在StartUpReceiver
中,您可以通过AlarmManager
再次创建报警。我建议使用需要在数据库中存储报警信息
或共享参考
以便在设备完成重新启动时创建报警
public class StartUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
////// reset your alrarms here
}
}
}