class Handler implements Runnable{的作用
时间: 2023-05-19 07:05:53 浏览: 113
class Handler implements Runnable 的作用是创建一个实现了 Runnable 接口的类 Handler,该类可以被用来创建线程并执行其中的 run() 方法。在 run() 方法中,可以编写需要在新线程中执行的代码。
相关问题
public class MainActivity extends Activity implements View.OnClickListener { //private SendThread sendthread; private static final String key1 = "INFO";//onenet平台上对应设备的其中一个数据流的名字 private static final String key2 = "zd";// private static final String key3 = "sy";// private static final String key4= "guang";// private static final String key5 = "yan";// private static final String key6 = "err_flag";// private Runnable runnable; private Handler handler;
这段代码是关于Android开发中的一个活动(Activity),实现了View.OnClickListener接口。其中定义了一些常量,表示OneNet平台上对应设备的数据流的名称。此外,还定义了一个Runnable和一个Handler,用于在Activity中更新UI。具体实现可以参考代码中的其他部分,包括onCreate方法等。如果您有具体的问题或疑惑,可以进一步提问。
public class InventoryRFID implements RfidEventsListener { @Override public void eventReadNotify(RfidReadEvents rfidReadEvents) { TagData[] tags = reader.Actions.getReadTags(500); if (tags == null) { return; } for (final TagData tag : tags) { startBeepingTimer(); if (epcList.add(tag.getTagID())) { runOnUiThread(new Runnable() { @Override public void run() { String epc = tag.getTagID(); if (epc.startsWith("40")) { String hexEpc = hexToAscii(epc); Log.e("tag", tag.getTagID()); reader(hexEpc); } } }); } } }怎么使用 Handler 避免并发修改 UI。
可以使用 Handler 来避免并发修改 UI,具体步骤如下:
1. 创建 Handler 对象,并在主线程中进行实例化。
2. 在 runOnUiThread 中,使用 Handler 发送一条消息,让其在主线程中更新 UI。
3. 在 Handler 中处理消息,更新 UI。由于 Handler 在主线程中运行,所以不会出现并发修改 UI 的问题。
修改后的代码如下:
```
public class InventoryRFID implements RfidEventsListener {
private Handler mHandler = new Handler(Looper.getMainLooper());
@Override
public void eventReadNotify(RfidReadEvents rfidReadEvents) {
TagData[] tags = reader.Actions.getReadTags(500);
if (tags == null) {
return;
}
for (final TagData tag : tags) {
startBeepingTimer();
if (epcList.add(tag.getTagID())) {
mHandler.post(new Runnable() {
@Override
public void run() {
String epc = tag.getTagID();
if (epc.startsWith("40")) {
String hexEpc = hexToAscii(epc);
Log.e("tag", tag.getTagID());
reader(hexEpc);
}
}
});
}
}
}
}
```
阅读全文