我想使用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