private void startUpdateTimerTask() {
TimerTask task = new TimerTask() {
@Override
public void run() {
doUpdate();
}
};
Timer timer = new Timer(true);
timer.schedule(task, ONE_MINUTE_MILLIS, ONE_HOUR_MILLIS);
}
private void doUpdate() {
new AsyncTask<Void,Void,Void>() {
@Override
protected Void doInBackground(Void... params) {
//....Network time-consuming tasks
return null;
}
}.equals();
}
(1)私の質問: この関数を実行すると、RuntimeException(No Looper; Looper.prepare() was not called on this thread.); が発生します。
だから私は変更しました:
private void startUpdateTimerTask() {
TimerTask task = new TimerTask() {
@Override
public void run() {
Looper.prepare();
doUpdate();
Looper.loop()
}
};
Timer timer = new Timer(true);
timer.schedule(task, ONE_MINUTE_MILLIS, ONE_HOUR_MILLIS);
}
するとRuntimeExceptionは出ませんが、doUpdate()は一度しか実行されませんか?
(2)質問: 1 時間ごとに情報を更新するためにネットワークにアクセスするにはどうすればよいですか?