检查 alarmManager 是否已经 运行

Check If alarmManager has already been running

我读过这个问题:How to check if AlarmManager already has an alarm set?

Chris Knight 的答案可能是最正确的答案。但我不明白布尔行:

boolean alarmUp = (PendingIntent.getBroadcast(context, 0, 
        new Intent("com.my.package.MY_UNIQUE_ACTION"),   <--------?
        PendingIntent.FLAG_NO_CREATE) != null);

"com.my.package.MY_UNIQUE_ACTION" 来自哪里?

是来自清单还是什么?

抱歉重复了。

boolean alarmUp = (PendingIntent.getBroadcast(context, 0, 
        new Intent("com.my.package.MY_UNIQUE_ACTION"),
        PendingIntent.FLAG_NO_CREATE) != null);

在上面的声明中,"com.mypackage" 是包名称,其中 "MY_UNIQUE_ACTION" 是 class 您处理 AlarmManager 的名称。

这里的关键是 FLAG_NO_CREATE,如 javadoc 中所述:如果所描述的 PendingIntent 已经存在,则只需 return null (而不是创建一个新的)

所以从上面的语句你可以知道如果 AlarmManager class 是 运行 则布尔值 return 为真,否则为假。

你可以通过多种方式获取包名

  1. 只需输入包名即可。
  2. 如描述in this link
Intent intent = new Intent("com.my.package.MY_UNIQUE_ACTION");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, 
                                      intent, PendingIntent.FLAG_UPDATE_CURRENT);