【发布时间】:2012-12-25 02:00:40
【问题描述】:
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小时更新一次信息?
【问题讨论】:
-
"问题:如何实现访问网络每1小时更新一次信息?" - 看看使用
IntentService触发的重复警报使用AlarmManager. -
你必须使用
runOnUiThread。 stackoverflow.com/questions/10135353/…
标签: android