文章图片
两个创建Handler对象的工厂方法,API>= 28时可使用,Android9.0新增的方法
文章图片
【Android|Android之Handler源码分析(第六篇(其他特性))】获得当前Handler对象持有的Looper对象的方法
文章图片
Handler中用于创建Message对象的方法
createAsync()方法分析
public static Handler createAsync(@NonNull Looper looper) {
if (looper == null) throw new NullPointerException("looper must not be null");
return new Handler(looper, null, true);
}
用于创建Handler对象的方法(异步消息),传入参数为Looper对象
1、检查传入的looper
若Looper为null,会抛出NullPointerException对象,该方法最终调用的是Handler的三个参数的构造方法,完成后会返回一个Handler对象
2、创建Handler对象
注意传给构造方法的第三个参数为true了吗?它代表此时创建的Handler对象将发送的都是异步消息
3、向调用者返回Handler对象
createAsync()方法分析(重载方法:2个参数)
public static Handler createAsync(@NonNull Looper looper, @NonNull Callback callback) {
if (looper == null) throw new NullPointerException("looper must not be null");
if (callback == null) throw new NullPointerException("callback must not be null");
return new Handler(looper, callback, true);
}
用于创建发送异步消息的Handler对象,传入参数为Looper对象与Callback对象
1、检查2个传入参数
传入的looper与callback均不能为null,若为null时均会抛出NullPointerException
2、创建Handler对象
3、向调用者返回发送异步消息的Handler对象
getLooper()方法分析
public final Looper getLooper() {
return mLooper;
}
用于返回Handler对象持有的Looper对象方法
obtainMessage()方法分析
public final Message obtainMessage()
{
return Message.obtain(this);
}
用于获取到一个Message对象的方法
1、通过Message的静态obtain系列方法获取Message对象
2、向调用者返回Message对象
总结
1、需要Message对象时,不要使用new的方式创建Message对象,而需要使用Handler提供的obtain系列方法或者直接使用Message的obtain系列方法!
2、异步消息的知识点很重要,是学好Handler机制的必经之路!
3、最后贴一个Handler重写的toString方法(看看大佬是怎么重写toString()方法的)
文章图片
推荐阅读
- Java版线索化二叉树
- java|java 不写this_还没弄明白Java中的this关键字吗,那来看这篇就够了!
- python|零基础学 Python 有什么建议()
- 国内互联网大厂面试问题和答案|2022秋招—阿里巴巴面试高频问题和答案
- BUG小王子|JDBC及Mybatis常见BUG
- BUG小王子|SpringMVC序列化问题
- 蓝桥真题|【蓝桥真题4】练练填空就想进国赛(拿下大题才能让你真正有底气(蓝桥31日冲刺打卡))
- 安卓逆向|安卓逆向之狐友sig破解
- 安卓逆向|安卓逆向之蝉妈妈sign破解