昨天我发现了一些奇怪的东西。在使用本地化版本(不同的应用程序差异包,相同的代码)测试应用程序时,我发现了一个有趣的错误 - 应用程序使用 AlarmManager 和待处理 Intent 设置警报 - 当广播被触发时,只有一个应用程序被激活并执行待处理意图和所有其他应用程序(只有不同的语言)根本没有反应。这是安卓bug吗??我期望设置的警报会触发每个拥有自己设置警报但 Android 正在启动的应用程序,或者最后一个活动应用程序是由广播或接收广播触发的?挂起的 Intent 如何与来自系统的广播相关联?系统如何知道哪个应用程序正在等待广播以及这个 .apk 是哪个应用程序?这可能看起来很奇怪或难以理解,但我也很困惑..
public class AlarmSetter {
public void SetAlarma(Context context){
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 57);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.add(Calendar.DAY_OF_MONTH, 0);
Intent intent = new Intent(context, AlarmKicked.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1333333, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,
pendingIntent);
}
}