当前位置: 首页 > news >正文

Android在子线程更新UI

上课时候老师说的是子线程不能更新UI

然而在他讲之前我弄着玩儿...发现竟然是可以的!

接着查了好多资料都说不行

后来终于找到一个符合情况的[1]

先说说我的代码吧

private TextView Info;@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_net);// 布局只有一个文本框Info = findViewById(R.id.Info);//绑定文本框new MyThread().start();}public class MyThread extends Thread{//继承Thread类public void run(){//重写run方法Log.i("Info", "Thread");String resultData = "";try{URL url = new URL("https://www.baidu.com");//URL对象HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();//打开这个连接conn.setConnectTimeout(5000);conn.connect();InputStream is = conn.getInputStream();//获取输入流InputStreamReader isr = new InputStreamReader(is);BufferedReader bufferReader = new BufferedReader(isr);String inputLine  = "";while((inputLine = bufferReader.readLine()) != null){resultData += inputLine + "\n";}System.out.println("Success");}catch(Exception e){e.printStackTrace();}Info.setText(resultData);Log.i("Info", "resultData");Log.i("Info", resultData);}}

image

博文[1:1]当中对此的主要分析如下:

看到上边方法中抛出的异常是不是感觉很熟悉,对,没错,就是我log中截出来的那句话!!那么我们现在懵逼了,为什么我们在不让子线程休眠的情况下去更新TextView文本可以,而让线程休眠两秒后就出抛异常呢?根本原因就是ViewRootImpl到底是在哪里被初始化的!ViewRootImpl是在onResume中初始化的,而我们开启的子线程是在onCreat方法中,这个时候程序没有去检测当前线程是不是主线程,所以没有抛异常!!下边我们去看ActivityThread源码,去找出原因!!

详细的分析需要去看原文

至于正统的方法,一般是用Handler等[2]

因为网络可能有延迟,所以数据的请求和接收要在子线程当中完成

收到数据后,通过handler将数据发送到主线程,完成更新


  1. Android可不可以在子线程中更新UI? ↩︎ ↩︎

  2. Android开发——实现子线程更新UI ↩︎

http://www.jsqmd.com/news/187773/

相关文章:

  • Python+FFmpeg提取哔哩哔哩安卓缓存
  • 2026玉溪婚纱摄影推荐,全玉溪主流商家星级综合排名(多维度权威测评) - 提酒换清欢
  • std::future超时功能落地C++26:3个你不能错过的实战技巧
  • JavaSE——封装
  • SegmentFault提问互动:以答疑形式传播HunyuanOCR价值
  • windows虚拟机宝塔设置网站本地域名
  • HunyuanOCR支持端到端文档问答?实测PDF内容交互能力
  • 揭秘C++负载均衡算法:如何在分布式环境中实现毫秒级响应
  • 轻量化OCR新选择:腾讯HunyuanOCR在Jupyter中的界面推理实践
  • UEVR经典作品 独家模组 (TOP级别)
  • 使用PyCharm开发HunyuanOCR插件时的环境配置建议
  • 【C++26重大更新】:std::future超时支持如何改变异步编程格局?
  • 如何利用单北斗GNSS实现水库变形监测效果提升?
  • Obsidian插件开发设想:本地OCR识别图片内文字
  • Kubernetes集群中部署HunyuanOCR实现高可用OCR服务
  • QSocketNotifier深度技术报告:架构解析、跨平台实现与高级应用范式
  • 腾讯混元OCR模型在复杂票据识别中的应用案例分享
  • 还在为论文查重爆表发愁?这7款AI工具实测,5分钟生成万字低AIGC率论文!
  • Rust能否完全取代C++?三大真实项目对比数据曝光(内存安全领域已悄然变天)
  • CSDN官网技术帖推荐:腾讯混元OCR在实际项目中的落地经验
  • vLLM加速版脚本优势明显:HunyuanOCR推理速度提升分析
  • C++网络编程兼容性难题:如何在Windows和Linux间实现无缝迁移?
  • Dify低代码平台连接HunyuanOCR实现智能文档处理工作流
  • 飞书文档增强功能:粘贴图片自动提取文字并插入正文
  • 夸克网盘直链下载助手与OCR结合?提取链接中的关键信息
  • 深度测评9个论文写作工具,一键生成论文工具助继续教育学生轻松完成毕业论文!
  • 批量图像处理性能测试:HunyuanOCR每秒处理多少张图?
  • 金山文档在线协作时能否实时OCR?技术可行性分析
  • 导师严选10个一键生成论文工具,本科生轻松搞定毕业论文!
  • C++ AIGC模型加载实战(从零到上线的完整路径)