【发布时间】:2016-07-13 08:31:36
【问题描述】:
我有一个监听蓝牙串行数据的线程。
我有一个将数据传递给ui线程的方法,叫做:sendData(byte[] buffer),它将数据完美地发送到ui线程,这会导致它在高频接收数据包时变得非常慢。
但我想实现一个周期性处理程序,它每 x 毫秒调用一次此 sendData 方法,因为我以高频率接收数据包。
在我的线程中,我在run() 中调用了以下内容
方法:
Looper.prepare;
mHandler = new Handler();
然后我将sendData(buffer)(它本身做得很完美)与:
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
sendData(tmp);
System.out.println("PostDelayed| "+ System.currentTimeMillis());
mHandler.postDelayed(this,INTERVAL);
}
},INTERVAL);
Interval 是预先声明的,其中将是调用该方法的周期性间隔。
但是 postDelayed 的运行没有被调用。我尝试调试,调用了 postdelayeds 行,但它以 'No such instance field mHandler' 退出。
有什么想法吗?
【问题讨论】:
-
可能没有
mHandler这样的实例字段。 -
但这意味着什么?
-
首先,
mHandler是什么?它在哪里声明? -
在Thread中声明并在Threads first run()中初始化
标签: java android multithreading bluetooth android-handler