2016-07-27 11 views
0

アプリは24時間ごとにデータを更新する必要があります。ユーザーは、期限が切れている場合、アプリの一部にアクセスできないようにすべきです。Android:アプリを閉じるとタイマーを起動する

アプリが起動すると、データベースが古くなっているかどうかをチェックします。しかし、ユーザーは長い間、バックグラウンドでアプリを開いたままにしておくことがあります。更新が必要なときには、アプリに警告する必要があります。

これを行うにはどうすればよいですか?私の最初の考えは、何らかのHandlerスレッドを使用して、アプリケーションが一時停止されるたびにタイムスタンプを保存し、新しい時間を計算し、resumerでタイマーを再起動することでした。

これは二つの質問の葉:私のアプリは関係なく、活動の一時停止または再開されたときにどのように検出することができます

  • を?
  • アンドロイドで長時間実行されるタイマーの最高のイディオムは何ですか? (時間がたつとアラートを表示するUIコンポーネントを変更することができなければなりません)

答えて

0

あなたはそうすることができますが、その代わりに共有プリファレンスにタイムスタンプを保存しないでくださいアプリが開いて再びその値を読み取って実際の値を得ることによって差を計算しますタイムスタンプ ....必要に応じて経過時間を更新した後!

タイムスタンプは...

だけ長い値であり、あなただけのSystem.currentTimeMillis()

を呼び出すことによってそれを得ることができ、共有設定は、クラスを使用SharedPreferences

0

のためにあなたが行うサービスを持つことができます24時間ごとにクエリを実行し、失敗した場合にユーザーに通知します。そのためにAlarmManagerを使用することができます。例:

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
Intent m_intent = new Intent(this, YourService.class); 
PendingIntent pi = PendingIntent.getService(this, 2, m_intent, 0); 
alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 * 24 * 60 * 60, pi); 

サービスは、上記のコードだけを使用して24時間後に再度呼び出すようにAlrmManagerに要求することができます。

注記:アラームは、システムまたはユーザーによってキャンセルできます(強制停止)。したがって、この解決策には注意が必要です。

関連する問題