Java AlarmManager在一段时间后被取消
我正在编写我的第一个应用程序,我试图在每天的特定时间发出通知,报告一些信息。 对于starter,我创建了以下类,用于在重新启动后重新启动警报,并从主应用程序启动警报(这只需要一段代码即可重用) 之后,我用以下行更新了清单:Java AlarmManager在一段时间后被取消,java,android,broadcastreceiver,alarmmanager,android-pendingintent,Java,Android,Broadcastreceiver,Alarmmanager,Android Pendingintent,我正在编写我的第一个应用程序,我试图在每天的特定时间发出通知,报告一些信息。 对于starter,我创建了以下类,用于在重新启动后重新启动警报,并从主应用程序启动警报(这只需要一段代码即可重用) 之后,我用以下行更新了清单: <receiver android:name="com.mycompany.myapp.services.SetAlarmReceiver" android:enabled="true" android:expo
<receiver
android:name="com.mycompany.myapp.services.SetAlarmReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver
android:name="com.mycompany.myapp.services.AlarmReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="MyReminder" />
</intent-filter>
</receiver>
我使用相同的方法检查主活动的警报是否开启:
private void checkServicesRunning() {
SetAlarmReceiver setAlarmReceiver = new SetAlarmReceiver();
setAlarmReceiver.checkServiceRunning(getApplicationContext());
}
在我看来一切都是正确的,我已经尝试了我找到的任何解决方案,在StackOverflow上阅读了大量类似我的问题,但我仍然不明白我做错了什么。
启动完成后,警报会在系统触发后立即正确触发,并且在我刚刚启用警报时,警报会正确触发(仅当通知时间在过去-即晚上10点且警报必须在上午9点触发时)。
当checkServiceRunning方法运行时,它告诉我报警已启用(在Logcat中返回true),但当我关闭应用程序并在一段时间后重新运行它时,报警看起来好像已被取消,并且正在由应用程序重新创建
有什么提示吗
谢谢
编辑:我尝试了命令“adb shell dumpsys alarm”,它实际上显示我的警报运行正常,因此,在这一点上,我认为问题在于其他方面,但我无法理解
public class AlarmReceiver extends BroadcastReceiver {
private Context ctx;
@Override
public void onReceive(Context context, Intent intent) {
this.ctx = context;
remindStuff();
}
private void remindStuff() {
....
some code
....
// I check if the alarm is still on (probably awful, since it just fired)
SetAlarmReceiver setAlarmReceiver = new SetAlarmReceiver();
setAlarmReceiver.checkServiceRunning(ctx);
}
}
private void checkServicesRunning() {
SetAlarmReceiver setAlarmReceiver = new SetAlarmReceiver();
setAlarmReceiver.checkServiceRunning(getApplicationContext());
}