我目前正在开发一个需要从蓝牙套接字读取数据的 android 应用程序。我正在使用的代码如下:
runOnUiThread(new Runnable() {
public void run()
{
try{
ReadData();
}catch(Exception ex){}
}
});
public void ReadData() throws Exception{
try {
b1 = new StringBuilder();
stream = socket.getInputStream();
int intch;
String output = null;
String k2 = null;
byte[] data = new byte[10];
// read data from input stream if the end has not been reached
while ((intch = stream.read()) != -1) {
byte ch = (byte) intch;
b1.append(ByteToHexString(ch) +"/");
k++;
if(k == 20) // break the loop and display the output
{
output = decoder.Decode(b1.toString());
textView.setText(output);
k=0;
break;
}
}
// close the input stream, reader and socket
if (stream != null) {
try {stream.close();} catch (Exception e) {}
stream = null;
}
if (socket != null) {
try {socket.close();} catch (Exception e) {}
socket = null;
}
} catch (Exception e) {
}
}
但是,当我在 android 设备上运行应用程序时,UI 不会自动更新并且一直冻结。有谁知道如何解决 UI 冻结问题?我想在 UI 上动态显示数据,而不是在完成循环后显示数据。
感谢您提前提供任何帮助。
问候,
查尔斯