Android 子线程更新UI解决方案

main thread(主线程)也叫UI thread(UI线程)

背景

Android4.0开始,
Android中请求网络强制不允许在主线程中操作,
而更新UI的操作由不允许在子线程中更新UI

为什么Android从4.0开始就不允许在主线程连接网络?
为什么Android从4.0开始就不允许在非UI线程中进行UI操作?

Android 4.0 和 Android 6.0 版本改动很多,前者主要是限制UI操作,后者主要是规范权限使用

应用场景

当我们的码农在子线程中请求网络,拿到服务器返回的数据之后,要更新UI
由于系统的要求,势必会产生一种矛盾:数据在子线程,更新UI要在主线程
此时我们必须要把数据返回到主线程中才行,Handler机制应运而生。

Handler机制是什么?
答:Handler机制是Android中用于线程间通信一套通信机制。

在这里插入图片描述

//在主线程中初始化Handler
 private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            //在此处处理消息
        }
};


Thread thread = new Thread(){
        @Override
        public void run() {
            super.run();
            //在子线程中发送消息
            Message msg = new Message();
            msg.arg1 = 5;
            handler.sendEmptyMessage(msg);
        }
};
thread.start();

在这里插入图片描述
在这里插入图片描述
如果觉得Handler机制繁琐,可调用 ActivityrunOnUiThread() 方法

runOnUiThread(new Runnable() {
     void run() {
         // Do stuff…
     }
});

Android Handler:手把手带你深入分析 Handler机制源码

理解 Activity.runOnUiThread

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值