Android:每个线程只能创建一个Looper

6
我在使用Android looper时遇到了问题。我有一个继承了AsynTask的类,在doInBackground()方法中我使用了Looper.prepare()和一些代码。它第一次运行得很好,但之后就会出现异常“每个线程只能创建一个Looper”。
似乎可以使用Looper.quit()来解决问题,但我无法实现它。
非常感谢您提供的任何帮助。

1
在我看来,Looper.quit() 是你需要的。在 Android API 文档中,明确指出“在调用此方法后一定要调用 loop(),并通过调用 quit() 来结束它”。 - onlygo
“无法实现”是什么意思? - methode
我的意思是我找不到 Looper 中的 quit()。它显示 getMainLooper、myLooper()、loop()、myQueue()、prepare()、prepareMainLooper(),但没有 quit()。 - viv
4个回答

3
class LooperThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }

0
尝试...
Looper.getMainLooper().quit();

0
getActivity().runOnUiThread (new Thread(new Runnable() { 
    public void run() {
        Looper.myLooper();
        getActivity().invalidateOptionsMenu();
    }
}));

0

只需添加以下检查。

 if (Looper.myLooper() == null)
     Looper.prepare();

https://dev59.com/qWAg5IYBdhLWcg3w5ucd#24115631 - Aown Raza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接