| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 【Android基础】多线程编程 -> 正文阅读 |
|
[移动开发]【Android基础】多线程编程 |
介绍当我们需要执行一些耗时操作时,比如发起一条网络请求,考虑到网速等因素的影响,服务器未必会立即响应我们的请求,如果不将这类操作放到子线程中去运行,会导致主线程被阻塞,从而影响用户对软件的正常使用。 线程的基本用法Android的多线程编程基本是和Java多线程编程使用相同的语法。 继承方式定义一个线程,只需要新建一个类继承自Thread,然后重写父类的run()方法,并在里面编写耗时逻辑即可。
该如何启动这个线程呢? 只需要new出MyThread的实例,然后调用它的start()方法,这样run()方法中的代码就会在子线程中运行了。
接口方式很多时候,使用继承的方式耦合性比较高,更多的时候可以使用实现Runnable接口的方式来定义一个线程,如下所示:
相应的,启动方式变成如下:
Thread 的构造函数接收一个 Runnable 参数,而我们 new 出的 MyThread 正是一个实现了 Runnable 接口的对象,所以可以直接将它传入到 Thread 的构造函数里,接着调用 Thread 的 start()方法,run()方法中的代码就会在子线程当中运行了。 匿名类方式可以使用匿名类的方式来定义一个线程。
在子线程中更新UIAndroid的UI是线程不安全的,如果想要更新应用程序中的UI元素,必须在主线程中进行,否则会出现异常。 下面用一个例子来说明: activity_main.xml 中的代码:
MainActivity.java中的代码:
运行之后,点击Change Text按钮,报如下错误: 那么,我们在Change Text按钮的点击事件中开启了一个子线程,在子线程中调用TextView中的setText方法,在子线程中更新了UI,结果果然出现了上面的报错。 由此也证实了Android中不允许在子线程中进行UI操作。 ? |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 21:26:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |