从源码与官方文档看之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类的源码位置,没有涉及到我们可以直接调用的方法,下一次也要迈入常用或者重要的方法源码了,未完待续。。。

相关文章
|
机器学习/深度学习 API 语音技术
|
开发框架 Unix Linux
深度探索:Qt CMake工程编译后的自动打包策略
深度探索:Qt CMake工程编译后的自动打包策略
903 0
|
数据中心
Google Earth Engine(GEE)最全632个数据集在哪里找?文章末含名称!
Google Earth Engine(GEE)最全632个数据集在哪里找?文章末含名称!
1238 0
Google Earth Engine(GEE)最全632个数据集在哪里找?文章末含名称!
|
分布式计算 资源调度 大数据
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(二)
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(二)
331 0
|
12月前
|
缓存 数据库
什么是缓存击穿 ? 怎么解决 ?
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大 解决方案 : ● 热点数据提前预热 ● 设置热点数据永远不过期。 ● 加锁 , 限流
|
关系型数据库 MySQL 数据库
CDC YAML 在阿里云的最佳实践
本文撰写自阿里云开源大数据平台数据通道团队,主要介绍了 Flink CDC YAML 在实时计算Flink版的最佳实践。
927 4
CDC YAML 在阿里云的最佳实践
|
SQL Java 数据库连接
MyBatis-Plus更新使用null值
MyBatis-Plus更新使用null值
837 2
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
686 0
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
easyexcel Java Apache
EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File
EasyExcel导入的时候报错Caused by: java.lang.NoClassDefFoundError: org/apache/poi/poifs/filesystem/File
2130 0
|
Java API 项目管理
Java一分钟之-Gradle插件开发:自定义构建逻辑
【6月更文挑战第5天】Gradle插件开发详解:从入门到发布。文章介绍如何创建自定义插件,强调依赖管理、任务命名和配置阶段的理解。示例代码展示插件实现及避免常见问题的方法。最后,讨论插件的发布与共享,助你提升构建效率并贡献于开发者社区。动手实践,打造强大Gradle插件!
410 3

热门文章

最新文章