アプリケーションで更新されたデータを取得するために、60 秒後にコードの特定のパッチを定期的に呼び出したいと考えています。メインの Android アクティビティのどこにコードを配置する必要があるのか 疑問に思っています。どんな助けでも感謝します
3 に答える
1
Timer
Javaの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#onDestroy
でActivity#onPause
ください。また、 Timer、ScheduledThreadPoolExecutor、および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 に答える