我想使用HandlerThread类来管理我的应用程序中的线程。以下代码运行良好:HandlerThread应该重写run()吗?
public class ThreadA extends HandlerThread
{
private void foo()
{
//do something
}
private void bar()
{
//Do something else
}
@Override
public boolean handleMessage(Message msg) {
switch(msg.what)
{
case 1:
{
this.foo();
break;
}
case 2:
{
this.bar();
break;
}
}
return false;
}
@Override
protected void onLooperPrepared()
{
super.onLooperPrepared();
synchronized (this) {
this.AHandler = new Handler(getLooper(),this);
notifyAll();
}
}
}
1-我应该重写run()方法吗?在“经典”线程中,大部分代码位于run方法中。 2 - 让我想象我需要我的foo()方法是一个无限的过程(例如获取视频流)。 什么是最好的解决方案?
- 用我的foo()代码覆盖运行?
简单地增加在FOO睡眠(XXX)():
私人无效美孚(){ // 做一些 睡眠(100); foo(); }
- 使用像一个延迟的消息:
private void foo()
{
//do something
handler.sendEmptyMessageDelayed(1,100);
}
PS:的AsyncTask将不包括我的需要,所以也懒得告诉我使用它。
感谢
好的,所以我的第二个问题的最佳解决方案是使用延迟的消息(不想让线程活着但重复该方法)? – grunk