代码之家  ›  专栏  ›  技术社区  ›  FrantiÅ¡ek Jeřábek

处理程序线程:每个线程只能创建一个循环

  •  1
  • FrantiÅ¡ek Jeřábek  · 技术社区  · 6 年前

    Handler HandlerThread 从前台服务到在新线程上执行任务。但是当我打电话给你的时候 HandlerThread.run() 我明白了 java.lang.RuntimeException: Only one Looper may be created per thread

    我正在使用以下代码启动线程:

    networkThread = new HandlerThread("Network Thread");
        if(networkThread.getLooper() == null)
            networkThread.run();
    
    handler = new Handler(networkThread.getLooper());
    handler.postDelayed(updateTask, 1000);
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Son Truong    6 年前

    在android中 Thread Looper HandlerThread ,它创建一个 活套 启动处理程序线程时。

    手柄螺纹 只是一个爪哇 螺纹 活套

    根本原因: 您的代码不正确。

    更改您的代码

    networkThread = new HandlerThread("Network Thread");
        if(networkThread.getLooper() == null)
            networkThread.run();
    
    handler = new Handler(networkThread.getLooper());
    handler.postDelayed(updateTask, 1000);
    

    // Create and start a handler thread.
    networkThread = new HandlerThread("Network Thread");
    networkThread.start(); 
    
    handler = new Handler(networkThread.getLooper()); // The calling thread must wait until a Looper has been created in the handler thread.
    
    // Post your task to handler thread to process
    handler.postDelayed(updateTask, 1000);