iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >Android 子线程更新UI
  • 443
分享到

Android 子线程更新UI

线程Android 2022-06-06 13:06:39 443人浏览 安东尼
摘要

一般情况下我们都说子线程不能更新UI,这里说的子线程可以更新UI,只是为了探讨子线程更新UI这个问题,第三种情况实现的子线程更新UI感觉并没有太

一般情况下我们都说子线程不能更新UI,这里说的子线程可以更新UI,只是为了探讨子线程更新UI这个问题,第三种情况实现的子线程更新UI感觉并没有太大的使用意义,只是为了深刻认识更新UI的问题。
看下这个异常

Android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
这个异常为何不是
Only the main thread that created a view hierarchy can touch its views
异常中是 original thread, 为何不是 main thread ?说明子线程是可以更新UI的

一、子线程间接更新UI

这种情况其实也是UI线程更新的,并不是真正意义上的更新UI
1、Handler
2、view.post
3、view.posDelay
4、AsyncTask

二、子线程直接更新UI

1、在onCreate中的子线程更新UI,只是钻了空子。

new Thread(new Runnable() {
            @Override
            public void run() {
                tx.setText("non-UiThread update textview");
            }
        }).start();
三、子线程更新UI

可以认为这一种是真正的子线程更新UI
看如下代码

@Override
    protected void onResume() {
        loadResImage();
        textView.postDelayed(new Runnable() {
            @Override
            public void run() {
                updateSonThread();
            }
        },3000);
        Toast.makeText(this, "xxxxxxxxxxx", Toast.LENGTH_SHORT).show();
    }
private void updateSonThread(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                Looper.prepare();
                TextView tx = new TextView(MainActivity.this);
                tx.setText("non-UiThread update textview");
                tx.setTextColor(Color.BLUE);
                WindowManager windowManager = MainActivity.this.getWindowManager();
                WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                        200, 200, 200, 200, WindowManager.LayoutParams.FIRST_SUB_WINDOW,
                        WindowManager.LayoutParams.TYPE_TOAST, PixelFORMat.OPAQUE);
                windowManager.addView(tx, params);
                Looper.loop();
            }
        }).start();
    }

一定要有Looper.prepare();以及 Looper.loop(); 原因还未知,有知道的可以留言
Android子线程真的不能更新UI么
可能是全网最简单透彻的安卓子线程更新 UI 解析
Android 非主线程更新UI 实例
android 在非UI线程更新UI仍然成功原因深入剖析
Android 在子线程中更新UI
面试官:Android 子线程更新UI了解吗?
Android在子线程中更新Activity中UI的方法
Android 在工作线程(非主线程)更改UI组件
Android进阶:六、在子线程中直接使用 Toast 及其原理
Android在非UI线程中显示Toast


作者:王人冉


--结束END--

本文标题: Android 子线程更新UI

本文链接: https://www.lsjlt.com/news/28991.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 在子线程中更新UI的几种方法示例
    本文介绍了Android 在子线程中更新UI的几种方法示例,分享给大家,具体如下:方式一:Handler和Message① 实例化一个Handler并重写handlerMessage()方法private Handler handler =...
    99+
    2023-05-30
    android 子线程 更新ui
  • Android如何实现使用handler在子线程中更新UI示例
    小编给大家分享一下Android如何实现使用handler在子线程中更新UI示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MainActivity代码:pac...
    99+
    2023-05-30
    android handler
  • KotlinThread线程与UI更新详解
    目录线程Thread的使用在线程中更新UI小结多线程的好处是不言而喻的,它能帮我们刚更多的事情,同时干不同的事情在程序设计中是经常出现的,这种时候我们使用的是线程。 在Kotlin ...
    99+
    2022-12-08
    Kotlin Thread线程 Kotlin UI更新
  • Android中如何使用异步线程更新UI视图
    这篇文章主要为大家展示了“Android中如何使用异步线程更新UI视图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android中如何使用异步线程更新UI视图”这篇文章吧。在Android中子...
    99+
    2023-05-30
    android
  • 在WPF中使用多线程更新UI
    有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会造成界面卡顿,如下就是一个简单的示例: public partial class MainWindow : Win...
    99+
    2024-04-02
  • 在WPF中怎么使用多线程更新UI
    本篇内容主要讲解“在WPF中怎么使用多线程更新UI”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在WPF中怎么使用多线程更新UI”吧!有经验的程序员们都知道:不能在UI线程上进行耗时操作,那样会...
    99+
    2023-07-02
  • 详解Android UI更新的几种方法
    前言在android开发中,界面UI的更新都是在主线程来完成的。线程分为主线程(Main Thread,简称MT)和工作线程(Work Thread,简称WT),我们通常会在WT中执行一些比较耗时的操作,比如下载,网络,缓存...
    99+
    2023-05-31
    ndroid ui 更新
  • Python Pyqt5多线程更新UI代码的实例分析
    Python Pyqt5多线程更新UI代码的实例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。"""在编写GUI界面中,通常用会...
    99+
    2023-06-21
  • PythonPyqt5多线程更新UI代码实例(防止界面卡死)
    """ 在编写GUI界面中,通常用会有一些按钮,点击后触发事件, 比如去下载一个文件或者做一些操作, 这些操作会耗时,如果不能及时结束,主线程将会阻塞, 这样界面就会出现未响应的状态...
    99+
    2024-04-02
  • android如何创建子线程
    在Android中创建子线程有多种方式,以下是其中两种常用的方式:1. 使用Thread类创建子线程:```javanew Thre...
    99+
    2023-08-12
    android
  • android应用中怎么对UI进行异步更新
    本篇文章给大家分享的是有关android应用中怎么对UI进行异步更新,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Handler消息传递机制package com.exam...
    99+
    2023-05-31
    android roi
  • Android中主线程和子线程有什么不同
    这篇文章给大家介绍Android中主线程和子线程有什么不同,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。主线程和子线程的区别每个线程都有一个唯一标示符,来区分线程中的主次关系的说法。 线程唯一标示符:Thread.Cu...
    99+
    2023-05-30
    android
  • android应用中实现异步更新UI的方法有哪些
    android应用中实现异步更新UI的方法有哪些?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。android中有下列几种异步更新ui的解决办法:Activity.runOnUi...
    99+
    2023-05-31
    android roi
  • 使用javafx更新UI的方法
    使用javafx更新UI JavaFx如果在子线程中更新UI,不论是task还是runable都会报错 java.lang.IllegalStateException: Not o...
    99+
    2024-04-02
  • Android在子线程中怎么调用Handler
    这篇文章主要介绍“Android在子线程中怎么调用Handler”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android在子线程中怎么调用Handler”文章能帮助大家解决问题。简介如果是Han...
    99+
    2023-07-04
  • Android的UI调优教程
    目录一、视图的层级分析:<ViewStub>二、资源缩减三.屏幕的过度绘制四、分析卡顿(策略GPU的渲染能力)五、让它看起来更快对于一个App的UI而言,在流畅性上的改进...
    99+
    2024-04-02
  • Android中创建子线程的方式详解
    在 Android 中,创建子线程的方式通常有以下几种: 使用 Thread 类进行创建 Thread 是 Java 中的一个类,可以通过继承 Thread 类或者创建 Thread...
    99+
    2023-05-18
    Android创建子线程方式 Android创建子线程 Android子线程
  • php在线更新功能/热更新,实例代码 thinkphp在线更新功能
    php在线更新功能,一个主方法,一个文件下载方法 线上项目,实测, public function update() { // 这里省略了版本判断逻辑,根据自己需要去写 // 更新包信息 ...
    99+
    2023-09-07
    php 开发语言
  • Android的VSYNC机制和UI刷新流程示例详解
    目录前言一、 Vsync信号详解1、屏幕刷新相关知识点2、VSYNC机制二、UI刷新原理流程1、VSYNC流程示意2、view的invalidate3、scheduleTravers...
    99+
    2022-12-09
    Android VSYNC机制UI刷新 Android VSYNC
  • Win10一周年更新预览版14352更新内容大全:UI更美观
    微软已经推送了Win10一周年更新预览版14352更新,本次更新包括Cortana、Windows Ink等功能改进。 微软称,Build 14352更新了文件资源管理器图标,现在看起来更加美观,此外还改进了Cortan...
    99+
    2023-05-20
    Win10 预览版14352
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作