Android中的线程(一)
来源:互联网 发布:cisco 端口配置 编辑:程序博客网 时间:2024/05/22 08:15
线程在Android中是一个很重要的概念,从用途上来说,线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程则往往用于执行耗时操作。
除了Thread本身以外,在Android中可以扮演线程角色的还有很多,比如AsyncTask和IntentService,同时HandlerThread也是一种特殊的线程。
尽管AsyncTask、IntentService以及HandlerThread的表现形式都有别于传统的线程,但是它们的本质仍然是传统的线程。对于AsyncTask来说,它的底层用到了线程池,对于IntentService和HandlerThread来说,它们的底层则直接使用了线程。
不同形式的线程虽然都是线程,但是它们仍然具有不同的特性和使用场景。AsyncTask封装了线程池和Handler,它主要是为了方便开发者在子线程中更新UI。
HandlerThread是一种具有消息循环的线程,在它的内部可以使用Handler。
IntentService是一个服务,系统对其进行了封装使其可以更方便地执行后台任务,IntentService内部采用HandlerThread来执行任务,当任务执行完毕后IntentService会自动退出。
从任务执行的角度来看,IntentService的作用很像一个后台线程,但是IntentService是一种服务,它不容易被系统杀死从而可以尽量保证任务的执行,而如果是一个后台线程,由于这个时候进程中没有活动的四大组件,那么这个进程的优先级就会非常低,会很容易被系统杀死,这就是IntentService的优点。
主线程主要处理界面交互相关的逻辑,子线程也叫工作线程。Android沿用了Java的线程模型,其中的线程也分为主线程和子线程,其中主线程也叫UI线程。主线程的作用是运行四大组件以及处理它们和用户的交互,而子线程的作用则是执行耗时操作,比如网络请求、I/O操作等。从Android 3.0开始系统要求网络访问必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException这个异常,这样做是为了避免主线程由于被耗时操作所阻塞从而出现ANR现象。
下一篇中我们将详细分析Android中的线程形态。
- android中的线程(一)
- Android中的线程(一)
- Android中的线程池(一)
- 总结:Android中的线程,线程池相关(一)---线程
- Android中的线程池和AsyncTask异步任务(一)
- Android——线程中的通信(一)
- Android——线程中的通信(一)练习
- Android线程与线程池(一)
- Android(线程一) 线程
- Android线程管理(一)
- C#中的线程(一)入门
- C#中的线程(一)入门
- C#中的线程(一)入门
- C#中的线程(一)入门
- C#中的线程(一)入门
- Linux中的线程局部存储(一)
- Linux中的线程局部存储(一)
- Linux中的线程局部存储(一)
- appium 原理解析
- Android apk安装器
- HDU5265 序列变换
- Meta标签下format-detection属性及含义
- Python 接口测试(五)
- Android中的线程(一)
- 查找某目录下占用空间最大的10个文件
- 数据结构中Java实现KMP与BF算法对比
- C++抽象编程——面向对象(4)——运算符重载与友元函数
- LEETCODE17
- linux系统之网络管理(1)
- listview显示不同布局的一个坑(记一下,以防后面又忘了)
- 51nod1289
- dp总结