我想产生一个休眠的线程,然后在接收到信号时执行一个方法。一旦方法完成,线程应该回到睡眠状态,等待下一个信号。
传入的信号足够频繁,以至于我不希望每次信号传入时都产生新线程的开销。目前,我正在轮询信号,但我相信有更好的方法来做到这一点。
我见过使用 Handler 和 AsyncTask 的例子,但我不太确定最好的实现是什么。有什么建议么?
public ModuleFeedbackTask extends Thread
{
RadioModule radioModule;
public ModuleFeedbackTask(RadioModule radioModule)
{
this.radioModule = radioModule;
}
@Override
public void run()
{
//Previously just called the function
//moduleUpdateTask();
//Currently polling for an update
//What I want to do is sleep until I get some signal
while(mState == JOB_STATE_RUNNING)
{
//Poll module
moduleUpdateTask();
//Sleep
sleep(5);
}
}
public moduleUpdateTask()
{
//Check if module is ready for processing
if(radioModule.updateReady)
{
radioModule.updateReady = false; //Clear flag
//do some intensive stuff
}
}
}
/**
* Callback when a radio module reports new data
* @param m Radio module with new data
*/
@Override
protected void onModuleStatusReport(RadioModule m)
{
if(mState == JOB_STATE_RUNNING)
{
//The below comments spawn a new thread on each feedback...
//I want to get around this
//ModuleFeedbackTask moduleFeedbackTask = new ModuleFeedbackTask(m);
//moduleFeedbackTask.setPriority(Thread.NORM_PRIORITY);
//moduleFeedbackTask.setName("ModFbTask");
//moduleFeedbackTask.start();
super.onModuleStatusReport(m);
}
}
素胚勾勒不出你
相关分类