星期五, 3月 24, 2017

[ Android ] can't create handler inside thread that has not called looper.prepare()




一開始是打算如果我按了個button,
那UI上就會show出Toast的訊息,

new Thread(new Runnable() {
   public void run() {}
}).start();

我直接在Button.OnClickListener內去執行這個thread,
後來就發生錯誤訊息,

can't create handler inside thread that has not called looper.prepare()

1.
因為UI的操作不能直接在thread上去做,
所以在activity上的話要用"runOnUiThread()"來處理UI的東西。

2.
另一種說法是如果你不是在主線去建thread,那他不會主動去處理looper,
所以要自己手動去加入。

new Thread(new Runnable() {
   public void run() {
       Looper.prepare();
       ....
       Looper.loop();
  }
}).start();

Ref_runOnUiThread
Ref_looper
Ref_looper

沒有留言: