Handler是android给我们提供用来更新UI的一套机制,也是一套消息处理的机制,我们可以发送消息,也可以通过它处理消息。Handler在frameWork的应用也非常广泛,比如说最常见的Activity的生命周期,onCreate、onResume、onDestory等方法都是通过Handler发送不同的消息去回调的,其实,在frameWord当中,Activity的交互,大部分都是通过AMS(activity manager service)处理的,整个应用程序的ActivityThread就是用过Handler的机制接收到AMS给我们发送的生命周期一些管理.
Android的开发是一定要用到handler的,因为Android在设计的时候,就封装了一套消息创建、传递、处理机制,如果不遵循这样的机制,就没有办法更新UI消息的(当然也可以自己设计一套消息创建、传递、处理的机制,不过会相当麻烦,所以最好用Google提供的这种机制),就会抛出异常
这是Android的Handler文档
里面讲到Handler主要有两个用途,一个是定时地发送message或一个runnable对象,另一个是在一个线程当中处理并执行相应的action.
当创建一个程序的时候,就会创建一个进程,这个进程在整个activity当中就是一个UI(主)线程,该线程就是activity thread的线程。
如果我们在子线程中更新UI而不使用Handler做媒介的话,程序将会崩溃,下面尝试一下:
从第三行的错误代码提示中可以看出:只有在主线程中才可以直接更改UI界面
下面就在子线程中通过使用Handler修改UI,功能是实现多张图片每个一段时间自动切换
这样程序就可以运行了
时间: 2024-10-23 11:27:15