2017-01-06 7 views
1

すべてのデバイスでは動作しません: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する必要はありません(そうであれば、毎回動作しませんデバイスはスリープしていません)。何か案は?

+0

代わりに 'setAlarmClock()'を試しましたか? –

+0

setAlarmClock()が機能しませんでした。全く同じ挙動が観察された。 –

+0

私はかつてこれに似た質問をしました。それはシステムがちょうど忙しいように聞こえ、それは非常に強力ではないのでしばらく時間がかかります。参照してください:http://stackoverflow.com/questions/24724859/alarmmanager-setexact-with-wakefulbroadcastreceiver-sometimes-not-exact – MobileMon

答えて

0

私が試したオプションに関係なく、そのデバイスではうまく機能しませんでした。私はそのデバイスのROMはちょうどその点で壊れていると思う。

関連する問題