Kev*_*rds 12 service android alarmmanager android-intent
我正在检查AlarmManager是否已使用此答案设置了警报.
以下是我的代码段.
boolean alarmUp = (PendingIntent.getBroadcast(MainActivity.this, 0,
new Intent(MainActivity.this, AlarmReceiver.class), PendingIntent.FLAG_NO_CREATE) != null);
if (alarmUp) {
// alarm is set; do some stuff
}
Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 1000, pendingIntent);
Run Code Online (Sandbox Code Playgroud)
但是,alarmUp始终设置为true.也就是说,无论我是否设置闹钟,每当我重新启动我的应用时,它都会告诉我这alarmUp是真的(我通过制作一个来检查它Toast).
请帮助我出错的地方.
Dav*_*ser 18
为了使此检查起作用,您需要绝对确定PendingIntent仅在设置警报时存在.您可以做两件事来确保:
1)测试代码时,请确保卸载应用程序,然后在测试之前重新安装应用程序.卸载您的应用将删除PendingIntent您的应用可能已创建但尚未处理的任何内容.
2)取消闹钟时,请确保您也取消闹钟PendingIntent.你可以这样做
Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
final PendingIntent pendingIntent =
PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent,
PendingIntent.FLAG_NO_CREATE);
if (pendingIntent != null) {
pendingIntent.cancel();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7107 次 |
| 最近记录: |