目录
Handler介绍:
1,什么是handler:

2,为什么使用handler

-
当应用程序在主线程(main线程 ui线程)进行耗时(比如连接网络,拷贝大的数据 )的操作 一般5秒钟无响应就会报ANR为了避免出现ANR我们把耗时操作放在子线程去做,但是在子线程去更新UI会报错误
10-06 02:17:57.778: W/System.err(1596): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
3,handler有什么用:
-
例如我们使用多线程来更新UI时,如果没有加锁的话,会产生界面错乱,但是如果增加了锁,但是性能又会下降,根据一行产生的问题android给我们封装好了一套更新UI的机制,我们只需要遵循这套机制即可。否则我们需要自己写。要处理这些问题。
4, 怎么使用handler
-
调用方法允许您在消息队列接收到可运行对象时对它们进行排队,通过Message对象发送讯息由Handler理的一系列数据。handleMessage(Message)方法(要求您实现Handler的子类)。
post(Runnable)
|
post(Runnable)
|
sendMessage(Message)
|
sendMessageAtTime(Message, long)
|
postAtTime(java.lang.Runnable, long)
|
postDelayed(Runnable, Object, long)
|
sendEmptyMessage(int)
|
sendMessageDelayed(Message, long)
|
Handler常用方法
1,Handler构造方法:
Handler()
|
默认构造函数将此处理程序与Looper用于当前线程。 |
Handler(Handler.Callback callback)
|
构造函数将此处理程序与Looper对于当前线程,并接受一个回调接口,您可以在其中处理消息。 |
|
使用所提供的Looper而不是默认的。 |
Handler(Looper looper, Handler.Callback callback)
|
使用所提供的Looper而不是默认的,而是接受一个回调接口来处理消息。 |
2,Handler公共方法:
公共方法 |
|
|
static Handler |
createAsync(Looper looper, Handler.Callback callback)
|
创建一个新的Handler,其发布的消息和运行程序不受同步障碍(如显示vsync)的限制。 |
static Handler |
createAsync(Looper looper)
|
创建一个新的Handler,其发布的消息和运行程序不受同步障碍(如显示vsync)的限制。 |
void |
dispatchMessage(Message msg) |
在这里处理系统消息。 |
final void |
|
|
final Looper |
|
|
getMessageName(Message message)
|
返回表示指定消息的名称的字符串。 |
|
void |
handleMessage(Message msg)
|
子类必须实现这一点才能接收消息。 |
final boolean |
|
检查消息队列中是否有带有回调r的挂起的消息。 |
final boolean |
hasMessages(int what)
|
检查消息队列中是否有代码“什么”的挂起的消息。 |
final boolean |