私のアプリで何日も大きな問題があります。もし私の英語があまりにも原産でないなら、私は謝罪します。私はAlarmManagerを実装して、私のアプリのユーザーに、現在または翌日のいつでも特定のサービスを開始するオプションを与えることができます。だから明日08:00に私のサービスの時刻を設定してサービスを開始することがあります。Android - 長い時間が過ぎてもアラームが鳴らない
アラームマネージャは、今から計算された時間を選択した時間まで待つ必要があります(手動で時刻を計算しても正しいです)!その後、サービスを開始します。私の問題は今、アラームマネージャーが私のサービスを開始していて、時にはそうでないことです。それは4時間以上を言うことを待たなければならない場合、それ以上働いていないと私のサービスが呼び出されていないようです。私はすべての必要な許可を設定しました。そうでなければ、まったく動作しませんでした。放送受信機は、このように実装されて
someIntent = new Intent();
someIntent.setAction("START_SERVICE");
AlarmManager alarams ;
alarmIntent = PendingIntent.getBroadcast(MainActivity.this, 0, someIntent, PendingIntent.FLAG_CANCEL_CURRENT);
alarams = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarams.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+delay, alarmIntent);
:あなたは、以下のalarmmanagerのコードを見てすることができます(そしてそれが登録されている!):
alarmReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Intent myIntent = new Intent(MainActivity.this, MyService.class);
startService(myIntent);
}
};
それがある場合、私は、あなたに言ったようサービスを開始する前に停止していません。
EDIT: 私は考えがあります。私はこのスレッドで何かを読んでいます:Android long running service with alarm manager and inner broadcast receiver
"someIntent"という意図のための私のコンストラクタは、マニフェストファイルで宣言されたBroadcastReceiversに対してのみ機能するかもしれません。だから私の場合はsomeIntent = new Intent(); someIntent.setAction("START_SERVICE")
の代わりにsomeIntent = new Intent("START_SERVICE")
を使うべきです。この効果はトンネリングと呼ばれています - 私はそれを理解します、もしうまくいくなら私はここに私の経験を掲示します。言及されたスレッドでうまく説明された答えをありがとう!私のような他のアイデアや経験があれば教えてください! eMu
ご返信ありがとうございます。デバイスが間にシャットダウンしていません。スリープモードに入っていますが、これはRTC_WAKEUPのためにアラームマネージャに影響しません。 –
はい、その場合、RTC_WAKEUPはインテントを配信しているはずです。 – Tarun
したがって、AlarmManagerはまだテストしても機能しません。その理由はわかりません。私はスムースを読む。 WAKE_LOCKについては、ブロードキャスト受信者が呼び出された後に電話がスリープモードになる前に、私のサービスがもう呼び出されない可能性があります。これが理由だろうか?私は本当にあなたが私を助けることを願っています!!!! よろしくお願いしますeMu –