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

时间:2010-10-08 06:53:54

标签: android looper

我遇到了Android looper的问题。我有一个扩展了AsynTask的类。在doInBackground()方法里面我有Looper.prepare()和下面的一些代码。

它第一次运行良好且良好但在此之后它给出了例外 “每个线程只能创建一个Looper”。

似乎有一些使用Looper.quit()的解决方案,但我无法实现它。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分: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();
      }
  }

答案 1 :(得分:0)

...试

Looper.getMainLooper().quit();

答案 2 :(得分:0)

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

答案 3 :(得分:0)

只需添加以下支票即可。

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