java - 如何在 Textview 中显示数据 2 秒(android Studio)?
问题描述
我想在 Textview 中显示数据 2 秒。所以我从 arduino 收到的数据在我使用 serialwrite 之间没有延迟。我使用 InputStream 和 DatainputStream 来接收数据。当数据在 textview 中显示时仍然有问题。它会突然获得下一个数据的机会。有什么方法可以将其保持2秒并抓住下一个数据吗?我在 android Studio 中编写代码。.
private void receive(byte[] data) {
InputStream is = null;
DataInputStream dis = null;
try {
is = new ByteArrayInputStream(data);
dis = new DataInputStream(is);
while (dis.available() > 0) {
byte[] b = new byte[data.length];
dis.read(b, 0, 8);
count++;
String part = HexDump.dumpHexString(b).substring(HexDump.dumpHexString(b).indexOf("E7 0"), HexDump.dumpHexString(b).indexOf("0A"));
if (part.contains("E7 01")) {
//receive_text2.setText((part));
show_text(receive_text2,part);
}
if (part.contains("E7 02")) {
receive_text3.setText(String.valueOf(1000*unsiged(b[5])+100*unsiged(b[6])));
}
if (part.contains("E7 03")) {
receive_text4.setText((part));
}
if (part.contains("E7 05")) {
receive_text5.setText((part));
}
receive_text6.setText(String.valueOf(count));
}
}catch (Exception e){
receive_text2.append("");
receive_text3.append("");
receive_text4.append("");
receive_text5.append("");
receive_text6.append("");
}
}
解决方案
将要显示的所有字符串添加到 Arraylist
ArrayList<String> strings = new ArrayList<>();
然后做:
Runnable job = new Runnable() {
@Override
public void run() {
if (!strings.isEmpty()) {
textView.setText(strings.get(0));
strings.remove(0);
textView.postDelayed(this, 2000);
} else {
textView.removeCallbacks(this);
}
}
};
textView.postDelayed(job, 2000); // delay of 2 seconds before setting a text to textView
推荐阅读
- html - 有没有一种安全的方法来使用 max-height CSS media-query
- javascript - 如何在 React Native 中控制动画 gif?
- powershell - 同时从不同的 Azure 订阅中检索某些内容
- maven - 使用 Maven 的 MuleSoft 部署失败
- javascript - 如何在回调函数中设置新属性,或使用异步和等待推送到数组?
- anylogic - 如何查看代理的存储位置。任何逻辑
- java - GSON解析多个相同类型的key
- python - 如何将(.gz)数据集加载到谷歌云(使用python)
- angular - 如何为带有 router.events 下标的组件编写单元测试?
- css - Slick Slider 在打开折叠引导程序 4 时损坏