現在、特定の時刻にコードを実行しようとしています。いくつかの研究の後、私は正しい方法は、AlarmManger
の使用を行うことです。コードは毎日午前3時に実行する必要があります。電話が午前3時に停止している場合、電話をオンにした直後にコードを実行する必要があります。特定の時刻に毎日コードを実行する - AlarmManager
私はグーグルを使用し、多くの結果を見つけました。しかし、私のコードは正しく動作していません。
昨日私は通知を受けました。通知時間は午後10時だった。しかし、コードでは、時間は午前3時に設定されています。私は時間のために(テストのために)多くのアラームマネージャを設定しました。トリガーされたAlarmManagerが古いものだった可能性はありますか?注:新しいAlarmManagerを設定する前に、私は自分の電話機から完全なアプリケーションを削除し、それを新規にインストールしました。 (私はこれは、すべての設定AlarmManagerのを削除すると思う?)
さて、ここで私が使用していたコードです:
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 0);
calendar.add(Calendar.MINUTE, 0);
calendar.add(Calendar.HOUR, 3);
Intent _myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
_myIntent.putExtra("MyMessage","Content of the message");
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 123, _myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) MainActivity.this.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*60*24, pendingIntent);
このコードは(私のアプリの起動のたびに実行されます内部MainActivity's
onCreate();
メソッド)。
alaramマネージャを使用する代わりに、日付と時刻が今日の日付と時刻と異なる場合は、sharepreferenceに日付と時刻を格納しようとしましたが、あなたはurコードを実行して古い日付と時刻を保存することができます。 –
@LokeshDesaiしかし、基本的な 'AlarmManager'をどのように動かすことができますか?現在、午後3時に発砲していません。あなたにアイデアを実現するためには、特定の時間に発射する必要があります。これは、共有された選好で与えられます。 – MyNewName
はい、あなたは私の考えで正しいです、それは特定の時間に実行されますが、それはあなたが電話に切り替えたときに、あなたが直接あなたが、私は 'BroadcastReceiver'を実装しているBroadCastReceiver –