アプリが実行されているときにのみコードを実行したい場合は、定期的にタスクを呼び出し、情報を取得した後にUIスレッドで何かを実行するには、ScheduledExecutorService
を使用できます。あなたの活動で
、宣言:scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
private ScheduledExecutorService scheduleTaskExecutor;
scheduleTaskExecutor = Executors.newScheduledThreadPool(5);
Future<?> future = scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// Fetch your data
runOnUiThread(new Runnable() {
@Override
public void run() {
// Do the update in your UI
}
});
}
}, 0, 5, TimeUnit.MINUTES);
をあなたは、後で使用することを再利用するために、あなたの活動のであなたのScheduledExecutorService
をキャンセルする必要がある場合:
future.cancel(true);
の場合サービスを削除するには、次のようにしてください:
scheduleTaskExecutor.shutdown();
これまで私がこれまで行ってきたことです。しかし、回転画面ではアクティビティが再開し、ローダーはasynctasksより優れていることがわかりました。どう思いますか?ローダーを使用してデータを定期的に更新する同じタスクを実行する方法はありますか? –
これを確認してください:http://stackoverflow.com/questions/7120813/asynctaskloader-vs-asynctask – beeb