我希望每1秒运行一次异步任务,并每隔1秒更新一次屏幕 怎么办呢?
举个简单的例子,我希望每1秒显示一次当前时间 我创建了一个异步任务,它可以计算当前时间更新UI一次 如何无限地运行任务?
答案 0 :(得分:2)
Asynch任务不是为重复运行而设计的。它是一个一件事。你开火,处理东西然后忘记它。重复工作尝试:
要么为你做好工作。
答案 1 :(得分:2)
这样的代码:
public class MainActivity extends Activity {
TextView mClock;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mClock = (TextView) findViewById(R.id.your_textview_id);
}
private Handler mHandler = new Handler();
private Runnable timerTask = new Runnable() {
@Override
public void run() {
Calendar now = Calendar.getInstance();
mClock.setText(String.format("%02d:%02d:%02d",
now.get(Calendar.HOUR),
now.get(Calendar.MINUTE),
now.get(Calendar.SECOND)) );
mHandler.postDelayed(timerTask,1000);
}
};
@Override
public void onResume() {
super.onResume();
mHandler.post(timerTask);
}
@Override
public void onPause() {
super.onPause();
mHandler.removeCallbacks(timerTask);
}
}
答案 2 :(得分:0)
您可以使用Timer
和TimerTask
。
文档建议使用ScheduledThreadPoolExecutor
,但Timer
非常简单,仍值得考虑。
答案 3 :(得分:-1)
所有这些答案都是错误的。如果你想在另一个线程上发生某些事情,请定期使用一个疯狂的线程。在顶部放置一个while循环,让它睡到下次你希望它运行。