すべてのデバイスでは動作しません:RTC_WAKEUPは、私は以下のようにアラーム(醜いコードを言い訳、私がテストしていた)のスケジューリングい
int code = new Random().nextInt();
Intent bIntent = new Intent(LaunchActivityReceiver.LAUNCH_ACTIVITY_ACTION);
bIntent.setClass(mContext, LaunchActivityReceiver.class);
PendingIntent broadcastIntent = PendingIntent.getBroadcast(mContext, code, bIntent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), broadcastIntent);
権限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
カレンダーがに設定されています将来の1分(私はこれについて確信している)。脇に、私は1分アラームのために非常に短いが、それはテストのためのものだと思います。私はこの問題を8時間警報に気づいた。画面がオンの場合、BroadcastReceiverは正確に1分後に起動します(はありません。はLogCatへの印刷を除く)。アプリがフォアグラウンドにあるかどうかは関係ありません。大丈夫です
画面がオフの場合でも、私は劇的に奇妙な動作をします。私はそれが1.5分、3分、5分で起こったのを見たことがあります。しかし、私が画面をオンにするとすぐに、アラームがまだ起きていなければ起動します。 RTC_WAKEUPはRTCとして扱われているようです。
これは、安価な中国語のタブレットでのみ発生します。しかし、それは5.1を実行しています。私はこの奇妙な行動を理解していません。
これはよくある問題のようですが、他の解決策は機能しませんでした。私はタイムゾーンや時間を変更していないので、BroadcastReceiverをログアウトするだけで、カレンダーのバグではないので、私はWakeCockする必要はありません(そうであれば、毎回動作しませんデバイスはスリープしていません)。何か案は?
代わりに 'setAlarmClock()'を試しましたか? –
setAlarmClock()が機能しませんでした。全く同じ挙動が観察された。 –
私はかつてこれに似た質問をしました。それはシステムがちょうど忙しいように聞こえ、それは非常に強力ではないのでしばらく時間がかかります。参照してください:http://stackoverflow.com/questions/24724859/alarmmanager-setexact-with-wakefulbroadcastreceiver-sometimes-not-exact – MobileMon