2012-07-04 92 views
0

如何從線程發佈消息到主UI活套? 我正在開發一個獨立的助手類,它應該顯示一個窗口。在Looper的幫助下訪問/發佈消息到UI線程

一個不好的解決方案是通過構造傳遞一個視圖,然後使用View.post(), 但我正在尋找一個更好的解決方案。

我認爲這會工作,但我得到了常見的「不在UI線程」異常。

public class Example { 

    private Context context; 

    public Example(Context context) { 
     this.context = context; 
    } 

    public void build() { 

    } 

    public void show() { 
     Handler handler = new Handler(Looper.getMainLooper()); 
     handler.post(new Runnable() { 
      @Override 
      public void run() { 
       Toast.makeText(context, "test", Toast.LENGTH_LONG); 
      } 
     }); 
    } 

} 

回答

1

只需通過上下文和利用runonUiThread方法,像這樣的,

((Activity)contextObj).runOnUiThread(new Runnable() { 

       public void run() { 
        Toast.makeText(context, "test", Toast.LENGTH_LONG).show(); 

       } 
      });