Android在子线程更新UI的三种方式
原文链接:https:///m0_37705108/article/details/82993433
第一种: Handler直接post
new Handler(mContext.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
}
});
第二种:runOnUiThread(需要可以拿到Activity)
// 如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程
// 因为runOnUiThread是Activity中的方法,Context是它的父类,所以要转换成Activity对象才能使用
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
// 在这里执行你要想的操作 比如直接在这里更新ui或者调用回调在 在回调中更新ui
}
});
第三种:Handler sendMessage
第三种是使用Handler的方法,往Handler中发送一个消息,然后当Handler接收到你发送过来的消息,再在Handler执行相应的操作。
这是接收消息执行的代码:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case ACTIVENUMBER:
MaintainProtos.ActiveNumber activeNumber = (MaintainProtos.ActiveNumber) msg.obj;
break;
}
}
};
这是发送消息的代码:
Message msg = Message.obtain();
msg.what = ACTIVENUMBER;
msg.obj = activeNumber;
mHandler.sendMessage(msg);
因篇幅问题不能全部显示,请点此查看更多更全内容