我不想每隔X分钟更新一次网站列表。
阅读此主题后:nested postDelayed / Runnable / Handler Android
我决定使用Runnable + Handler而不是TimerTask。 不幸的是,我的Runnable不会第二次运行。它将刷新数据一次,然后没有任何反应。
我的onCreate()方法如下所示:
...
fooWebsitesListView = (ListView) findViewById(R.id.fooWebsitesListView);
fooWebsitesAdapter = new ArrayAdapter<fooWebsite>(
getApplicationContext(), R.layout.list_black_text,
R.id.list_content, websiteList);
fooWebsitesListView.setAdapter(fooWebsitesAdapter);
final fooWebsitesActivity fooWebsitesRefreshActivity = new fooWebsitesActivity();
mHandler = new Handler();
refreshfooWebsitesRunnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.d("scheduled task",
"---Scheduled Task: Refresh fooWebsites");
try {
fooWebsitesRefreshActivity.execute();
//mHandler.postDelayed(refreshfooWebsitesRunnable,3000);
mHandler.postDelayed(this, 3000);
} catch (Exception e) {
// Toast.makeText(getApplicationContext(),
// "Unable to receive Data", Toast.LENGTH_SHORT)
// .show();
}
}
};
startRepeatingTask();
}
void startRepeatingTask() {
refreshfooWebsitesRunnable.run();
}
LOG:
12-14 14:56:47.624: D/scheduled task(7995): ---Scheduled Task: Refresh fooWebsites
此后一直没有机会。 UI线程工作正常,应用程序不会冻结或类似的东西。为什么我的runnable循环不会?
答案 0 :(得分:1)
尝试拨打mHandler.post()
而不是refreshfooWebsitesRunnable.run()
,并在mHandler.removeCallbacks()
方法的开头调用run()
。