java - 运行时异常 "can' t 在未调用 Looper.prepare() 的线程内创建处理程序”

标签 java android handler ui-thread android-looper

我正在制作一个接收字符串的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/

相关文章:

java - 从表信息执行更新

java - 鼠标监听器 - MouseClicked

android - 任务 ':app:transformClassesWithAndroidGradleClassShrinkerForDebug' 执行失败

jquery - $(document).ready(function(){ ... }) 会清除所有先前在文档准备就绪时注册的事件处理程序吗?

java - j2ee 和 ADFS 之间的集成

java - Blackberry 嵌入式浏览器中的 Cookie 操作

android - 如何使用 MPAndroidChart 设置 x 轴标签

android - 如何裁剪位图?

java - 以编程方式减少处理程序中的时间间隔。安卓

windows - 关闭时不会调用 SetConsoleCtrlHandler