Android 主线程(UI线程)的理解

目录

 

一、背景

二、原因

三、理解


一、背景

网络连接需要时间。Web 服务器可能需要 1~2 秒的时间来响应,文件下载则耗时更久。考虑到这个因素,Android 禁止任何主线程网络连接行为。即使强行为之,Android 也会抛出 NetworkOnMainThreadException 异常。

二、原因

这是为什么呢?要想知道答案,首先要知道什么是线程,什么是主线程,主线程有什么用途。线程是个单一执行序列。单个线程中的代码会逐步执行。所有 Android 应用的运行都是从主线程开始的。然而,主线程不是线程那样的预定执行序列。相反,它处于一个无限循环的运行状态,等着用户或系统触发事件。一旦有事件触发,主线程便执行代码做出响应。

三、理解

把应用想象成一家大型鞋店,闪电侠是这家店唯一的员工。(是不是人人梦寐以求的场景?) 要让客户满意,他需要做大量的工作,如布置商品、为顾客取鞋、为顾客量尺寸等。闪电侠并非 浪得虚名,所以,即便所有工作都由他一人完成,客户也能得到及时响应,感到满意。 为及时完成任务,闪电侠不能在单一事件上耗时过久。要是一批货丢了怎么办?这时,必须 有人花时间打电话调查此事。假设让闪电侠去做,他在忙于联络查找货物时,店里等候的顾客可 就不耐烦了。

闪电侠就像应用里的主线程。它运行着所有更新 UI 的代码,其中包括响应 activity 的启动、按钮的点击等不同 UI 相关事件的代码。(由于响应的事件基本都与用户界面相关,主线程有时也叫作 UI 线程。)

事件处理循环让 UI 代码总是按顺序执行。这样,事件就能一件件处理,不用担心互相冲突,同时代码也能够快速执行,及时响应。目前为止,我们编写的所有代码(刚刚使用 AsyncTask 工具类完成的代码除外)都是在主线程中执行的。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄毛火烧雪下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值