android jetpack App Startup 应用启动时初始化组件(java)

chatgpt/2023/9/27 17:44:54

有什么用?

应用启动时初始化组件。

怎么用

添加依赖

dependencies {implementation "androidx.startup:startup-runtime:1.1.1"
}

创建类,继承Initializer。

public class AppInit implements Initializer<String> {@NonNull@Overridepublic String create(@NonNull Context context) {UMConfigure.init(context, Constant.UMENG_KEY, "", UMConfigure.DEVICE_TYPE_PHONE, "");return "APP INIT";}@NonNull@Overridepublic List<Class<? extends Initializer<?>>> dependencies() {return new ArrayList<>();}
}

create()初始化组件
dependencies() 返回初始化程序所依赖的其他 Initializer列表。返回空列表,表示没有依赖。

如果有依赖,添加到列表。这样初始化A,就要先初始化B。

public class AInitializer implements Initializer<String> {@NonNull@Overridepublic String create(@NonNull Context context) {//.....return "A";}@NonNull@Overridepublic List<Class<? extends Initializer<?>>> dependencies() {return Arrays.asList(BInitializer.class);}
}

配置provider

        <providerandroid:name="androidx.startup.InitializationProvider"android:authorities="${applicationId}.androidx-startup"android:exported="false"tools:node="merge"><!-- This entry makes ExampleLoggerInitializer discoverable. --><meta-data  android:name="cn.jn.mytest.init.AppInit "android:value="androidx.startup" /></provider>

启动应用的时候,就会自动初始化组件。

但这不是我们想要的,一般情况下,会先检测是否同意隐私协议,之后,再做处理,这个时候就需要手动初始化组件。
手动初始化组件,需要停用自动初始化功能。

<providerandroid:name="androidx.startup.InitializationProvider"android:authorities="${applicationId}.androidx-startup"tools:node="remove" />

手动初始化

AppInitializer.getInstance(context).initializeComponent(AppInit .class);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5312954.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

【【51单片机AD/DA的分析】】

51单片机AD/DA的分析 看似单片机实验&#xff0c;其实是要学好数电 模数转换 与 数模转换 运算放大器 DA的转换就是利用运算放大器实现的 输出电压v0-(D7~D0)/256 x (VrefxRfb)/R D7~D0 就是我们控制的按键看输入多少 然后再划分256份 Vref是我们设置的一个基准电压 PWM 这种…

IDEA好用的插件总结

IdeaVim 这个看个人喜好&#xff0c;我比较喜欢用vim&#xff0c;并且支持自定义修改按键绑定alibaba java code guidelines alibaba的java编程规范plantUML 绘制UML&#xff0c;支持语言显示plantUML integration 能够直接将代码转化为UML图&#xff0c;非常方便rainbow brack…

Ftrace

一、概述 Ftrace有剖析器和跟踪器。剖析器提供统计摘要&#xff0c;如激素胡和直方图&#xff1b;而跟踪器提供每一个事件的细节。 Ftrace剖析器列表&#xff1a; 剖析器描述function内核函数统计分析kprobe profiler启用的kprobe计数器uprobe profiler启用的uprobe计数器hi…

MySql005——使用SQL创建数据库和表

在《MySql000——MySql数据库的下载、安装以及使用图形化工具创建数据库和表》中&#xff0c;我们使用图形化工具MySQL Workbench创建数据库和表&#xff0c;下面我们将使用SQL来实现这一过程 一、数据库操作 1.1、创建数据库 1.1.1、创建MySQL数据库通用写法 使用 create 命…

apple pencil到底值不值得买?好用的iPad电容笔

随着ipad平板型号版本的不断更新&#xff0c;其的功能越来越多&#xff0c;现在它的性能已经可以和笔记本电脑相媲美了。而现在&#xff0c;随着技术的进步&#xff0c;IPAD已经不再是单纯的娱乐&#xff0c;而是一种功能强大的学习、绘画、工作等等。要增加生产效率&#xff0…

大数据处理框架-Spark DataFrame构造、join和null空值填充

1、Spark DataFrame介绍 DataFrame是Spark SQL中的一个概念&#xff0c;它是一个分布式的数据集合&#xff0c;可以看作是一张表。DataFrame与RDD的主要区别在于&#xff0c;前者带有schema元信息&#xff0c;即DataFrame所表示的二维表数据集的每一列都带有名称和类型。 2、构…

文件上传、下载的总结

最近做了一个后台系统&#xff0c;里面有好多复杂的功能。其中就有上传的功能点&#xff0c;上传的时候&#xff0c;我们要校验上传的文件格式&#xff0c;限制上传的数量&#xff0c;自定义上传接口&#xff0c;可以拖拽上传&#xff0c;可以进行删除、预览&#xff0c;删除之…

iOS开发-Reachability网络状态

iOS开发-Reachability网络状态 Reachablity 是一个iOS下检测&#xff0c;iOS设备网络环境用的库。 监视目标网络是否可用监视当前网络的连接方式监测连接方式的变更情况 一、Reachability 在Podfile中引入 pod Reachability二、监听网络状态 先看下Reachability&#xff…
推荐文章