0

アプリケーションで更新されたデータを取得するために、60 秒後にコードの特定のパッチを定期的に呼び出したいと考えています。メインの Android アクティビティのどこにコードを配置する必要があるのか​​ 疑問に思っています。どんな助けでも感謝します

4

3 に答える 3

1

TimerJavaのutilパッケージのクラスを使用できます。特定のコードを定期的に何度も実行できます。5 秒ごとに実行されるを見てください。

于 2013-03-12T07:07:27.987 に答える
0
import android.os.Handler;

public class ExecuteEveryMinuteExample {
    private static final int DELAY_IN_MILLIS = 60000;

    private final Handler handler;
    private final Runnable task;

    public ExecuteEveryMinuteExample(Handler handler, Runnable runnable) {
        this.handler = handler;
        this.task = new Task(runnable);
    }

    public void start() {
        handler.postDelayed(task, DELAY_IN_MILLIS);
    }

    public void stop() {
       handler.removeCallbacks(task);
    }

    private class Task implements Runnable {
        private Runnable task;

        private Task(Runnable runnable) {
            this.task = runnable;
        }

        @Override
        public void run() {
            task.run();
            start();
        }
    }
}

この「タイマー」はアクティビティのライフサイクルに関連付けられています。 で停止することを忘れないActivity#onDestroyActivity#onPauseください。また、 TimerScheduledThreadPoolExecutor、およびTimerTaskもチェックしてください。ニーズにより適している場合があります。

于 2013-03-12T07:37:31.330 に答える
0

Android でサービスとブロードキャスト レシーバーを使用します。

// Restart service every 30 seconds
  private static final long REPEAT_TIME = 1000 * 30;

  @Override
  public void onReceive(Context context, Intent intent) {
    AlarmManager service = (AlarmManager) context
        .getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, MyStartServiceReceiver.class);
    PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
        PendingIntent.FLAG_CANCEL_CURRENT);
    Calendar cal = Calendar.getInstance();
    // Start 30 seconds after boot completed
    cal.add(Calendar.SECOND, 30);
    //
    // Fetch every 30 seconds
    // InexactRepeating allows Android to optimize the energy consumption
    service.setInexactRepeating(AlarmManager.RTC_WAKEUP,
        cal.getTimeInMillis(), REPEAT_TIME, pending);

詳細については、このサイトを参照してください。

http://www.vogella.com/articles/AndroidServices/article.html

于 2013-03-12T07:43:02.547 に答える