昨日、変なものを見つけました。アプリをローカリゼーション バージョン (異なるアプリ差分パッケージ、同じコード) でテストしているときに、興味深いバグが 1 つ見つかりました - アプリは AlarmManager と保留中のインテントでアラームを設定します - ブロードキャストが起動されると、1 つのアプリのみがアクティブになり、保留中を実行しますインテントと他のすべてのアプリ(異なる言語のみ)がまったく反応しません。これはアンドロイドのバグですか?? 設定されたアラームは、独自の設定されたアラームを持つすべてのアプリをトリガーすることを期待していますが、Android が起動しているか、最後にアクティブなアプリがブロードキャストまたは受信ブロードキャストによってトリガーされますか? 保留中のインテントは、システムからのブロードキャストにどのように関連付けられていますか? ブロードキャストを期待しているアプリと、この .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);
}
}