HandlerThread在子线程中创建handler并重复发消息执行主线程中handler的任务
private void initBackThread()
{
mCheckMsgThread = new android.os.HandlerThread("check-message-coming");
mCheckMsgThread.start();
mCheckMsgHandler = new Handler(mCheckMsgThread.getLooper())
{
@Override
public void handleMessage(Message msg)
{
checkForUpdate();
if (isUpdateInfo)
{
mCheckMsgHandler.sendEmptyMessageDelayed(MSG_UPDATE_INFO, 0);
}
}
};
}
private void initBackThread2()
{
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
handler=new Handler(getMainLooper()){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
checkForUpdate();
if (isUpdateInfo)
{
handler.sendEmptyMessageDelayed(MSG_UPDATE_INFO, 0);
}
}
};
}
});
thread.start();
}
private void checkForUpdate()
{
try
{
//模拟耗时
Thread.sleep(1000);
mHandler.post(new Runnable()
{
@Override
public void run()
{
String result = "实时更新中,当前大盘指数:<font color='red'>%d</font>";
result = String.format(result, (int) (Math.random() * 3000 + 1000));
mTvServiceInfo.setText(Html.fromHtml(result));
}
});
} catch (InterruptedException e)
{
e.printStackTrace();
}
}