美文网首页
Handler 官方文档翻译

Handler 官方文档翻译

作者: ThornFUN | 来源:发表于2018-07-04 12:40 被阅读0次

    ## Handler 简介(全文基于 API 27)

    public class Handler

    extends Object

    它的子类有:

    AsyncQueryHandler, AsyncQueryHandler.WorkerHandler, HttpAuthHandler, SslErrorHandler

    Handler 允许您发送和处理与线程的MessageQueue相关联的消息和可运行对象。每个Handler实例都与单个线程和该线程的消息队列相关联。当您创建一个新的Handler时,它被绑定到创建它的线程/消息队列-从那时起,它将把消息和运行程序传递到消息队列中,并在它们从消息队列中取出来时执行它们。

    处理程序有两个主要用途: (1) 为 messages 和 runnables 未来的调用制定计划;(2) 为不同线程上的操作排序。

    通过如下方法调度Message:

        post(Runnable), postAtTime(Runnable, long), 

        postDelayed(Runnable, Object, long), 

        sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), 

        and sendMessageDelayed(Message, long)

    post 版本允许您在接收到消息队列时排序可运行的对象。sendMessage 版本允许您排序一个 Message 对象, 这个对象包含将由

    handler的 handleMessage (Message) 方法处理的数据包 (要求您实现Handler的子类)。

    在传递或发送到 Handler 前, 您可以允许在消息队列准备就绪后立即处理该项, 或者在处理之前指定延迟, 或将其处理为绝对时间。 后两个允许您实现超时、定时和其他基于计时的行为。

    为应用程序创建进程时, 其主线程专用于运行一个消息队列, 负责管理顶级应用程序对象 (活动、广播接收器等) 及其创建的任何窗口。您可以创建自己的线程, 并通过处理程序与主应用程序线程进行通信。这是通过调用与以前相同的 post 或 sendMessage 方法, 而是从新线程中完成的。然后, 将在处理程序的消息队列中计划给定的可运行或消息, 并在适当时进行处理。

    ##Handler的四个构造方法:

    >*如果该线程没有一个 Looper,这个 handler 将无法接收消息,因此抛出异常。*

    - Handler()

    - 默认的构造器,将当前线程的 handler 与 Looper 相关联

    - Handler(Handler.Callback callback)

    - 多了一个回调接口,用来处理回调的 messages

    - Handler(Looper looper)

    - 用提供的 looper 代替默认的

    - Handler(Looper looper, Handler.Callback callback)

    - 回调 looper 和 messages

    ## Handler 的公共方法:

    - static Handler createAsync(Looper looper, Handler.Callback callback)

    -  创建一个新的处理程序, 其发布的 messages 和 runnables 不受同步屏障 (如显示 vsync) 的限制。

    - static Handler createAsync(Looper looper)

    - 创建一个新的处理程序, 其发布的 messages 和 runnables 不受同步屏障 (如显示 vsync) 的限制。

    - void     dispatchMessage(Message msg)

    - 在这里处理 message 消息

    - final void     dump(Printer pw, String prefix)

    - final Looper     getLooper()

    - String     getMessageName(Message message)

    - 返回表示指定消息名称的字符串

    - void     handleMessage(Message msg)

    -  子类必须实现此项才能接收消息。

    - final boolean     hasMessages(int what)

    - 检查是否有带有 ‘what’ 属性的 messages 发布

    - final boolean     hasMessages(int what, Object object)

    - 检查是否有带有 ‘what’ 属性并且其 obj 是 ‘object’ 的 messages 发布

    - final Message     obtainMessage(int what, Object obj)

    -  与 obtainMessage () 相同, 只是它还设置返回消息的内容和 obj 成员。

    - final Message     obtainMessage()

    -  从全局消息池返回新消息。

    - final Message     obtainMessage(int what, int arg1, int arg2)

    - 与 obtainMessage () 相同, 只是它还设置返回消息的内容、arg1 和 arg2 成员。

    - final Message     obtainMessage(int what, int arg1, int arg2, Object obj)

    -  与 obtainMessage () 相同, 只是它还设置返回消息上的 arg1,and arg2 值。

    - final Message     obtainMessage(int what)

    -  与 obtainMessage () 相同, 只是它还设置了返回消息的成员。

    - final boolean     post(Runnable r)

    -  使可运行的 r 添加到消息队列中。

    - final boolean     postAtFrontOfQueue(Runnable r)

    -  向实现可运行的对象发送消息。

    - final boolean     postAtTime(Runnable r, long uptimeMillis)

    -  使可运行的 r 被添加到消息队列中, 以便在 uptimeMillis 给定的特定时间执行。

    - final boolean     postAtTime(Runnable r, Object token, long uptimeMillis)

    - 使可运行的 r 被添加到消息队列中, 以便在 uptimeMillis 给定的特定时间执行。

    - final boolean     postDelayed(Runnable r, long delayMillis)

    -  使可运行的 r 被添加到消息队列中, 以便在经过指定的时间后执行。

    - final boolean     postDelayed(Runnable r, Object token, long delayMillis)

    -  使可运行的 r 被添加到消息队列中, 以便在经过指定的时间后执行。

    - final void     removeCallbacks(Runnable r)

    - 移除消息队列中等待的 Runnable 对象 r

    - final void     removeCallbacks(Runnable r, Object token)

    - 移除消息队列中等待的带有 token 的 Runnable 对象 r

    - final void     removeCallbacksAndMessages(Object token)

    -  删除所有待处理的回调帖子并发送其 obj 为令牌的消息。

    - final void     removeMessages(int what)

    - 移除所有带有 what 参数的 等待中的 messages

    - final void     removeMessages(int what, Object object)

    - 移除所有带有 what 参数及 object 参数的 等待中的 messages

    - final boolean     sendEmptyMessage(int what)

    -  发送空的消息。

    - final boolean     sendEmptyMessageAtTime(int what, long uptimeMillis)

    - 在指定时间发送只包含 what 参数的空消息。

    - final boolean     sendEmptyMessageDelayed(int what, long delayMillis)

    - 在延迟指定时间之后发送只包含 what 参数的空消息。

    - final boolean     sendMessage(Message msg)

    - 将 message 推送到当前消息队列的末尾

    - final boolean     sendMessageAtFrontOfQueue(Message msg)

    - 将 message 推送到当前消息队列的首位

    - boolean     sendMessageAtTime(Message msg, long uptimeMillis)

    - 将 message 在指定时间 uptimeMillis 推送到消息队列中

    - final boolean     sendMessageDelayed(Message msg, long delayMillis)

    - 将 message 在延迟指定时间 delayMillis 之后推送到消息队列中

    - String     toString()

    -  返回对象的字符串表示形式。

    相关文章

      网友评论

          本文标题:Handler 官方文档翻译

          本文链接:https://www.haomeiwen.com/subject/pklxhftx.html