从源码与官方文档看之Handler篇(六)

简介: 今天继续看Handler类,构造方法已经基本全部看完,后面应该是一些类的一般方法之类的内容了,继续加油。

正文

首先,我们可以看到官方又提供了三个注释为hide(隐藏)的方法:

/** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
@NonNull
public static Handler getMain() {
    if (MAIN_THREAD_HANDLER == null) {
        MAIN_THREAD_HANDLER = new Handler(Looper.getMainLooper());
    }
    return MAIN_THREAD_HANDLER;
}
/** @hide */
@NonNull
public static Handler mainIfNull(@Nullable Handler handler) {
    return handler == null ? getMain() : handler;
}
/** {@hide} */
@NonNull
public String getTraceName(@NonNull Message message) {
    if (message.callback instanceof TraceNameSupplier) {
        return ((TraceNameSupplier) message.callback).getTraceName();
    }
    final StringBuilder sb = new StringBuilder();
    sb.append(getClass().getName()).append(": ");
    if (message.callback != null) {
        sb.append(message.callback.getClass().getName());
    } else {
        sb.append("#").append(message.what);
    }
    return sb.toString();
}

这最让我注意的就是这个hide的注释,查询了一些相关资料,它们解释:类或API是否开放,是通过doc的注释{@hide}来控制的。这表示不对外公开api,但是系统内部是可以使用该注释标记的接口的。加入了 /** {@hide} */ 注视后的类或者API是google编译时不对外开放的,但是运行的时候这写类和API都是可以访问的。

所以这三个方法应该是类自己使用的,我们不去调用它们。从方法名与方法内部内容也大致可以判断出它们应该是一些关于Handler创建时相关的操作与判断方法,第一个可以返回MAIN_THREAD_HANDLER即主线程Handler,第二个是对Handler对象的null判断后的安全返回,当Handler对象为null是获取getMain(),而不为空则返回自身,第三个方法则内容多一些,从方法名大意是获取跟踪(消息)名,可以返回Message对象的跟踪名。

总结

今天主要还是在构建Handler类的源码位置,没有涉及到我们可以直接调用的方法,下一次也要迈入常用或者重要的方法源码了,未完待续。。。

相关文章
|
消息中间件 Android开发
Handler源码解读——handler使用时的注意事项
工作中经常会遇到从子线程发送消息给主线程,让主线程更新UI的操作,常见的有handler.sendMessage(Message),和handler.post(runnable)和handler.postDelayed(runnable, milliseconds);一直在使用这些方法,却不知道他们的原理,今天就来解释一下他们的原理。
|
安全
从源码与官方文档看之Handler篇(四)
上回我们说到第一个Handler类的含有控制是否异步执行的构造函数,今天我们继续往下阅读,相信能更清楚的了解Handler类的机制。
|
Java Android开发
从源码与官方文档看之Handler篇(二)
今天又发现自己原来是Handler这个类名打错了导致前面几篇一直再说Java的Handle,而安卓的是Handler,前一篇文章我们主要翻译了安卓官方对Handler的注释,这一篇我们来看看Handler类的一些属性,成员变量。
|
消息中间件 Android开发
从源码与官方文档看之Handler篇(九)
今天我们来详细看看Handler的post()方法吧
|
安全 API 调度
从源码与官方文档看之Handler篇(十)
每次阅读源码,我都想着许多过往云烟,可以说,一切不在一样,不过,想再多又如何,倒不如按下心思,在手中记下这一切更为妥当。还是看看这些充满智慧结晶的源码吧!
|
Android开发
从源码与官方文档看之Handler篇(八)
后面更文节奏可以舒缓一些了,每篇文章的篇幅也会长些许。 废话不多说,我们继续看Handler类。
从源码与官方文档看之Handler篇(五)
尽管前路坎坷,可我们还是继续走了下去,一转眼已经又到了第五篇了,每篇内容较少,所以后面整理完时,会汇总成一篇文章,相信这样做会更具有可读性。
从源码与官方文档看之Handler篇(七)
接下来就是我们可以正常调用的Handler类方法了,希望早日完成Handler类的源码阅读。
从源码与官方文档看之Handler篇(三)
前面我们说到dispatchMessage方法,今天我们继续往下看源码。
105 0
|
消息中间件 Java 调度
从源码与官方文档看之Handler篇(一)
好家伙,写了四篇文章才发现自己看源码的Handle所属的包不一样