当应用启动就会创建一个主线程(UI线程),非UI线程不能修改界面或者重绘界面,UI操作只能在主线程中进行,当有耗时的操作要遵循新开线程处理,这就涉及到了子线程执行完毕或执行的过程中,和主线程交互的问题,常用的方法有如下几点
1. Handler + Rxbus
最简单的场景,子线程中Rxbus发送message,在UI线程的观察者监听中收到消息,重绘UI
//主线程声明
private Handler uiHandler;
//主线程onCreate回调定义
uiHandler = new Handler();
//子线程中
//通知关闭popWindow
RxBus.getDefault().post(RxCode.FACE_BLACK_DISMISS, "");
//UI线程中
Subscription subscription = RxBus.getDefault()
.toObservable(RxBusBaseMessage.class)
.subscribe(new Action1<RxBusBaseMessage>() {
@Override
public void call(RxBusBaseMessage message) {