DASOU

导航

如何在子线程中使用Toast和更新UI

因为没一个Looper处理消息循环,所以子线程中无法使用Toast

方法:

Looper.prepare();     
 Toast.makeText(getActivity(),"刷到底啦",Toast.LENGTH_SHORT).show();  
 Looper.loop();

在子线程中更新UI

第一种:

new Handler(context.getMainLooper()).post(new Runnable() {
 
    @Override
    public void run() {
        // 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
 
    }
});

第二种:

// 如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程
// 因为runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才能使用
((Activity) context).runOnUiThread(new Runnable() {
 
    @Override
    public void run() {
        // 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
    }
});

第三种就是handler机制了

 

posted on 2015-01-27 15:16  DASOU  阅读(818)  评论(0编辑  收藏  举报