Android 检查alarmManager是否已在运行

Android 检查alarmManager是否已在运行,android,alarmmanager,Android,Alarmmanager,我看过这个问题: 克里斯·奈特的答案也许是最正确的答案。但我不明白布尔线: boolean alarmUp = (PendingIntent.getBroadcast(context, 0, new Intent("com.my.package.MY_UNIQUE_ACTION"), <--------? PendingIntent.FLAG_NO_CREATE) != null); boolean alarmUp=(PendingContent.g

我看过这个问题:

克里斯·奈特的答案也许是最正确的答案。但我不明白布尔线:

boolean alarmUp = (PendingIntent.getBroadcast(context, 0, 
        new Intent("com.my.package.MY_UNIQUE_ACTION"),   <--------?
        PendingIntent.FLAG_NO_CREATE) != null);
boolean alarmUp=(PendingContent.getBroadcast(上下文,0,
新意图(“com.my.package.my_UNIQUE_ACTION”),
在上面的语句中,“com.mypackage”是包名,其中“MY_UNIQUE_ACTION”是处理AlarmManager的类名

这里的关键是标志_NO_CREATE,如javadoc中所述:如果所述的pendingent不存在,则只需返回null(而不是创建一个新的)

因此,从上面的语句可以知道,如果AlarmManager类正在运行else false,则布尔值返回true

您可以通过各种方法获取包名

  • 只需输入包名
  • 如上所述

  • 所以最终的结果是这样的:“com.xxx.xxx.myAlarm.class”或“com.xxx.xxx.myAlarm”?这个awnser有很多文本,但没有说任何好的东西,当然“com.my.package”是动作所在的包,但它没有解释动作来自何处,意图之前是如何用那个包创建的
    boolean alarmUp = (PendingIntent.getBroadcast(context, 0, 
            new Intent("com.my.package.MY_UNIQUE_ACTION"),
            PendingIntent.FLAG_NO_CREATE) != null);
    
    Intent intent = new Intent("com.my.package.MY_UNIQUE_ACTION");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, 
                                          intent, PendingIntent.FLAG_UPDATE_CURRENT);