3.2.4 Handler的作用
根据Handler处理Message消息相关特性和前面的实例,可以得出这样的结论:Handler主要作用是异步处理较费时的逻辑,优先将界面返回给用户,异步处理完成后再去更新用户界面。
在Android中当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程专门管理界面中的UI控件,对事件进行分发, 比如点击一个 Button按钮,Android会分发事件到具体的Button按钮上,来响应用户的操作。
如果此时需要一个耗时的操作,例如联网读取数据或者读取本地较大的一个文件,不能把这些操作放在主线程中,放在主线程中的话,界面会出现假死现象, 如果5秒还没有完成,会收到Android系统的一个错误提示“强制关闭”,在这样的情况下需要把这些耗时的操作放入子线程中去处理,子线程处理完成后涉及再去更新主线程的UI界面,而Android主线程是线程不安全的。也就是说,更新UI只能在主线程中更新,子线程中无法更新主线程的界面。
这时,Android设计出Handler来解决这个复杂的问题,由于Handler运行在主线程中(Activity UI线程中),它与子线程可以通过Message对象来传递数据,这个时候,Handler就承担着接收子线程传过来的Message对象(包含消息标识和数据对象)的责任,从而配合主线程更新UI。而这些消息都通过主线程的消息队列按照先进先出的方式进行发送和接收并做相关处理。
【责任编辑:book TEL:(010)68476606】
点赞 0