6.7.1. 单线程执行

优质
小牛编辑
140浏览
2023-12-01

6.7.1.单线程执行

Android程序默认运行在单线程之下。单线程顺序执行所有的操作,这一操作完成之前,下一个操作绝不会执行。这一行为被称作“阻塞”(blocking)。

图6.8. 单线程执行

这个线程也被称作UI线程,意思是程序中用户界面的相关操作都在这里执行。除处理所有UI元素的渲染之外,事件的响应也由它负责。比如触摸屏幕、点击按钮等等。图6.8 "单线程执行"展示了在只有一个UI线程时,代码的执行过程。

让StatusActivity在单线程中运行会遇到一个问题,那就是执行网络操作时,用户界面会响应不灵。这是因为阻塞在网络操作上的时间是不可预知的。我们不知道用户的网络接入方式是快速的WiFi,还是慢速的GPRS,因此在调用twitter.updateStatus()时,必须考虑延时的问题。

Note:

程序若长时间无响应(一般是五秒),Android系统会自动弹出一个对话框,询问是否将该程序所在的进程杀死。这个对话框就是Application Not Responding(应用程序无响应),简称ANR。如图6.9 "Application Not Responding对话框"。

图6.9. Application Not Responding对话框