继承Handler还是实现Handler.Callback?
Android的Handler提供了多种创建方式:
package com.chanryma.demo;import android.os.Handler;
import android.os.Message;public class HandlerDemo {private Handler myHandler1 = new Handler(new MyHandlerCallback());private Handler myHandler2 = new MyHandler();private class MyHandlerCallback implements Handler.Callback {@Overridepublic boolean handleMessage(Message msg) {// Handle messages.return false;}}private class MyHandler extends Handler {@Overridepublic void handleMessage(Message msg) {// Handle messages.}}
}
Handler的源码,下面是处理消息的过程:
/*** Handle system messages here.*/public void dispatchMessage(Message msg) {if (msg.callback != null) {handleCallback(msg);} else {if (mCallback != null) {if (mCallback.handleMessage(msg)) {return;}}handleMessage(msg);}}
两种使用方式的优劣:
是一个优先级的问题,如果你消息自己有callback的话,就会优先执行你的消息的callback,如果有mCallBack对象的话,就执行mCallBack对象的回调。最后才是handler自己的方法。可能你没有用到比较复杂的场景里,比如接收到的消息有可能是多类型多处理机制的,并且不是在同一个页面的。但是又要用同一个handler来发消息。
message自带的callback实际上是一个runnable类,也就是说你给message设置了callback后,实际上执行的是这个runnable类里的run方法。
继承Handler还是实现Handler.Callback?相关推荐
- android handler内存,Android handler之内存泄露原因揭示
关于handler机制大家可以看前面专题Android面试精选--再聊android Handler机制.今天我们要说的重点是 handler为什么会发生内存泄露? 我们先从源头说起,应用刚启动时,第 ...
- handler.post和handler.sendMessage的区别和联系
现在大部分人都很熟悉handler这个东西了,我们常用handler的场景无非有两个: 1. 异步更新UI 2. 延时任务 但是我一直有一个困惑,就是handler.post(r)这个方法有什么独特的 ...
- Handler完全解读——Handler的使用
个人博客:https://blog.N0tExpectErr0r.cn 小专栏:https://xiaozhuanlan.com/N0tExpectErr0r Handler完全解读--Handler ...
- gen_event中的handler和supervised handler
呃,在gen_event中有两个添加handler的方法 gen_event:add_handler/3 gen_event:add_sup_handler/3 一开始总是有些迷惑两者的区别,今天查看 ...
- 【Android 异步操作】手写 Handler ( Handler 发送与处理消息 | Handler 初始化 | 完整 Handler 代码 )
文章目录 一.Handler 发送与处理消息 ( 两大功能 ) 二.Handler 初始化 三.完整 Handler 代码 一.Handler 发送与处理消息 ( 两大功能 ) Handler 有两个 ...
- 【Android 异步操作】Handler ( 主线程中的 Handler 与 Looper | Handler 原理简介 )
文章目录 一.主线程中的 Handler 与 Looper 二.Handler 原理简介 一.主线程中的 Handler 与 Looper Android 系统中 , 点击图标启动一个应用进程 , 就 ...
- 85、android handler的警告Handler Class Should be Static or Leaks Occur
转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1106/1922.html 在使用Handler更新UI的时候,我是这样写 ...
- 安卓handler的用法,handler举例
原帖跳转: link 一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在 ...
- android handler,Android中Handler原理
Handler主要是主线程和子线程通信.一般子线程中做一些耗时操作做完之后通知主线程来修改UI. 实际上android系统在Activity启动或者状态变化等都是通过Handler机制实现的. 首先进 ...
最新文章
- dubbo k8s 服务发现_工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇
- 中兴F460破解超管及远程管理
- BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)
- 计算机组成原理 试讲,常州信息职业技术学院-试讲ppt-计算机组成原理-信息表示.ppt...
- 带负荷测试要求二次最小电流_电流回路基础知识(15):带负荷测试
- SOA架构设计和相关案例分析
- resiprocate 之repro使用
- Delphi7·ProgressBar控件
- solidworks鼠标中键设置
- html空格语言,HTML中如何键入空格
- 流媒体服务器ZLMediaKit
- 超文本传输协议http详解
- On SDK version 23 and up, your app data will be automatically backed up and restored on app install.
- CentOS下Qt安装
- SQL注入--利用cookie进行注入
- 10M网线与100M网线和1000M(千兆)网线做法
- CF 221 C Circling Round Treasures - dp - 状压
- macOS 应用崩溃日志
- S19文件格式详解(1)
- GEC210 烧写裸机程序到SD卡、flash