0

現在のデータで毎分更新する Android アプリ ウィジェットを作成しています。それを更新するためにAlarmManager、電話がスリープしていないときにのみ機能するを使用しています。

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), INTERVAL_SEC * 1000, createFrequentUpdateIntent(context));

ただし、次の課題に直面しています。電話が長時間の後に復帰したときに、データが何時間も更新されていないため、データが古いことをすぐにユーザーに確認してもらいたいのです。そのため、長期間更新がない場合は、何らかの方法でデータを古いものとしてマークしたいと考えています。

イベントにフックすることを考えましたSCREEN_ONが、どうやらこれはバックグラウンド サービスを介してのみ可能であり、これは強くお勧めしません (ここここ)。

これを行う方法のアイデアはありますか?

ありがとう!

4

1 に答える 1

0

おそらく、AlarmManager に加えて、典型的なupdateTimeMillsupdate メソッドを使用して、約 30 分ごとに呼び出すことができます。このメソッドから更新を取得すると、ウィジェットをレイアウトの「古いデータ」バージョンに置き換えることができます。これにより、電話が再びオンになったときに、古いデータ通知で既に再描画されます。

電話の電源が入っているときにこの更新がトリガーされた場合は、最後の更新がどれくらい最近のものかを確認し、データが古くない場合は無視することができます.

電話がスリープ状態でも更新が呼び出されるため、これは機能すると思います。そのためupdateTimeMills、AlarmManager が停止しても更新されるはずです。

于 2012-11-14T06:31:20.003 に答える