6

Android ルーパーに問題があります。AsynTask を拡張したクラスがあります。doInBackground() メソッド内には、 Looper.prepare() と以下のコードがあります。

初めてうまく動作しますが、その後、「スレッドごとに作成できるルーパーは1つだけです」という例外が発生します。

Looper.quit() を使用する解決策があるようですが、実装できません。

どんな助けでも大歓迎です。

4

4 に答える 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();
      }
  }
于 2011-12-14T02:38:05.837 に答える
0

試す...

Looper.getMainLooper().quit();
于 2011-06-16T13:40:36.883 に答える
0

次のチェックを追加するだけです。

 if (Looper.myLooper() == null)
     Looper.prepare();
于 2015-09-01T11:59:30.590 に答える
0
getActivity().runOnUiThread (new Thread(new Runnable() { 
    public void run() {
        Looper.myLooper();
        getActivity().invalidateOptionsMenu();
    }
}));
于 2013-01-15T18:29:16.917 に答える