我正在制作一个接收字符串的UDP服务器,我必须修改该字符串,但我似乎无法弄清楚如何将字符串转发到应该处理该字符串的类,我得到以下异常:
“无法在未调用looper.prepare()的线程内创建处理程序”
我对 android 的经验很少,不知道如何解决这个问题,而且其他与此相关的问题似乎都没有给我答案。
public class Server implements Runnable {
@Override
public void run() {
while(!start)
{
//do nothing
}
try {
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
//updateTrack("\nServer: Start connecting \n");
DatagramSocket socket = new DatagramSocket(SERVERPORT, serverAddr);
byte[] serverBuf = new byte[1064];
DatagramPacket packet = new DatagramPacket(serverBuf, serverBuf.length);
//updateTrack("Server: Receiving \n");
socket.receive(packet);
int realSize = packet.getLength();
byte[] RealServerBuf = new byte[realSize];
System.arraycopy (serverBuf, 0, RealServerBuf, 0, realSize);
recived = new String(RealServerBuf);
//updateTrack("Server: " + recived + "\n");
StringHandler stringHandler = new StringHandler();
stringHandler.StringSplitter(recived);
updateTrack("Server: Succeed\n");
} catch (Exception e) {
updateTrack("Server: Error\n" + e);
}
}
}
这个问题与我实例化 StringHandler.class 的方式有关,并且它没有与 UI 线程连接,但我不知道该怎么做。
最佳答案
将代码放入runOnUiThread
activity.runOnUiThread(new Runnable() {
public void run() {
// your code here
}
});
请查看 this了解更多详情。
关于java - 运行时异常 "can' t 在未调用 Looper.prepare() 的线程内创建处理程序”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30237188/