因为没一个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机制了