3

アプリに、ユーザーの選択に応じて繰り返し呼び出されるメソッドがあります。ユーザーが毎時を選択した場合と同様に、アクティビティは毎時間呼び出されるメソッドを起動します。この繰り返されるタスクをスケジュールする最善の方法を知りたいです。

私はタイマーとタイマータスクを試してきましたが、何らかの理由で、次のようにJavaカレンダークラスを使用すると機能しないようです:

    Calendar c1 = Calendar.getInstance();
          c1.add(Calendar.SECOND, 30);    
  updateTimer.scheduleAtFixedRate(cleanCompletedCache, c1.getTimeInMillis(),hour );

私が読んだことから、ハンドラーはこの複数の繰り返しタスクには適していません。これにはアラーム マネージャを使用する必要がありますか?また、上記のコードが正しく実行されないのはなぜですか? ありがとう

4

1 に答える 1

3

AlarmManager が必要で、それは setRepeating または setInexactRepeating 呼び出しです。

そこで、アプリケーションに配信されるインテントをスケジュールし、それを処理するインテント レシーバーを記述します。このように、アプリケーションのアクティベーションは完全に Android システムの責任であり、アクティベーションを待っているだけでアプリケーションを 1 時間実行する必要はありません。

奇妙な理由で、タイマー呼び出しの間にコードを実行する必要がある場合は、バックグラウンド サービスを実行し続ける必要がありますが、それでも AlarmManager を使用してウェイクアップを取得します。

于 2011-05-07T20:51:49.510 に答える