Perface
前一阵子一直在讨论,Android的几大块中我认为比较重要的一些东西,比如:Activity的生命周期以及onSaveInstanceState()的使用要点。(突然发现,我好像对Android的个人总结文章好像不多,算了不管了)这里先稍稍给大家提一下Android的几大块:
- View:我们看到的UI组建,个人认为这个不是非常重要,在追求功能实现的过程中只要会用就OK
- Activity:用户界面(包含UI组建)简单来说可以理解为程序入口吧,作为UI操作的入口,通常体现为程序中的一个屏幕
- Intent:执行特定工作的意图,比如说:你要跳转你的Activity、拨电话、广播消息等
- ContentProvider:移动应用程序之间的共享数据,个人感觉就是个数据库,保存App的各种记录
- Services:平台服务,可长时间运行的后台进程
- Fragment:碎片,其实就是为平板等大屏设备所扩展出来的(常见的就是大屏幕设备左右分栏,左边功能区,右边是内容区),当然小屏幕设备通用可以使用。
About Handler
在Android里,所有的UI组件应该在UI线程中调用而不应该在子线程中调用(因为Android的UI组建是非线程安全的),因此需要一个跨线程通讯的一种机制。Handler就是这样一种机制,然而经过学习,我了解Handler实际上可以工作在两种工作模式:主线程上和跨线程上。首先先提一提Android组建的线程框架,这有助于理解Handler的工作机制。
Android的主线程通过一个消息队列执行所有工作----运行所有组件。主线程位于一个循环中并处理消息队列中的每条消息,如果任何消息用时超过5秒,Android就会抛出一条ANR消息。
这里可以发现,Android的线程通讯机制使用的是一种消息传递的方式。个人理解,Android会将产生的消息添加到消息列队里调度,当捕捉到一个消息之后就应该去处理这个消息,Handler的工作就是负责处理Message。这实际上是通过回调方法实现的,当一个Message被处理时,就会引发一个回调函数去处理这个消息,也就是之后会看到的 public void handleMessage(Message msg); 回调函数。