我需要一个计时器,它将为其处理程序发送消息。我创建了一个实现 Runnable 的类,并将其对象提供给线程可运行构造函数。当我启动线程时,它会挂起应用程序,显然它没有异步工作。我本可以使用 AsyncTask,但我也听说它们是为短期操作而设计的,而我的后台计时器必须在整个活动 onResumed 状态下工作。您是否介意指出我的错误,并可能提供有关 android 线程主题的有用链接。谢谢。
这是我写的代码:
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
_myTimerInstance = new MyTimer(new Handler() {
@Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
// ...
}
});
_myThread = new Thread(_myTimerInstance);
_myThread.run();
}
private static class MyTimer implements Runnable {
private Handler _myHandler;
private boolean _activityHasBeenLeft;
public MyTimer(Handler myHandler) {
_myHandler = myHandler;
}
public void setActivityHasBeenLeft(boolean b) {
_activityHasBeenLeft = b;
}
@Override
public void run() {
while (!_activityHasBeenLeft) {
try {
Thread.sleep(2000);
_myHandler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}