-1

私は 2 つの時間を持っていますが、これらの時間は前日とは異なります。

jsonオブジェクトを使用してインターネットから時間を取得しています...必要なのは、システムのクロックがリマインダーの時間に達したときに通知をトリガーすることです.このリマインダーとブロードキャスト レシーバーでは、通知が作成されます。しかし、これは良い解決策ではありません。なぜなら、毎日時間が異なるため、アラームを繰り返すことができないからです...また、アクティビティ全体を再度作成する必要があるため、ブロードキャストレシーバーで同じアラームメソッドを呼び出すことはできませんそれらはもう存在しないため、すべての変数を再度取得します...

電話が再起動されても常に機能するサービスを作成する方法はありますか?それはその作業を継続し、システムの時間とリマインダーの時間を比較し、2 つの時間が等しいか、または存在する場合に通知をトリガーします。別の解決策?ありがとう。

編集

public void scheduleAlarm()
        {
            Long time=calendar.getTimeInMillis()+5*60*1000;
         //other lines to get the real time..  





           Intent intentAlarm = new Intent(this, TimeAlarm.class);


            AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);


           alarmManager.set(AlarmManager.RTC_WAKEUP,time, PendingIntent.getBroadcast(this,1,  intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));

        }
4

2 に答える 2

0

新しい時刻を取得したり、保留中のアラームが発生したときにスケジュールを登録解除したり登録したりするなど、別のアプローチを実行できますが、状況に応じてサービスが適切に動作できるように、小さく慎重に構成されたサービスを使用するソリューションも可能です。システムの状態について。

于 2013-10-09T17:20:49.220 に答える
0

サービスにアラーム メソッドを記述し、そのサービスで必要なすべての変数を取得する必要がありました。アラームがトリガーされると、インテント ブロードキャスト レシーバーによってキャッチされ、通知が作成され、アラームが再び機能するようになります...

于 2013-10-09T18:44:55.110 に答える