美文网首页
StartUp介绍以及优化

StartUp介绍以及优化

作者: 愈强 | 来源:发表于2021-10-16 02:22 被阅读0次

    An Startup helper for Android module develop.

    Startup介绍

    androidx.startup 是为Library提供的用于自动初始化的插件。

    接入方法

    implementation "androidx.startup:startup-runtime:1.1.0"
    

    在Library中实现Initializer接口并添加初始化逻辑,并在Manifest中进行注册,即可完成自动初始化操作。
    其中[Initializer full name]是Initializer实现类的全名,其他部分固定不变。

    <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        android:exported="false"
        tools:node="merge" >
        <meta-data
            android:name="[Initializer full name]"
            android:value="androidx.startup" />
    </provider>
    

    实现原理

    startup插件利用了ContentProvider的特性:ContentProvider的onCreate方法先于Application的onCreate方法执行。
    他们的执行顺序是这样的:

    MyApplication.attachBaseContext -> ContentProvider.onCreate -> Application.onCreate
    

    同时,在ContentProvider中可以通过getContext方法获取到Context。

    Startup内部代码会解析Manifest中的注册信息,获取到已注册的初始化接口列表并进行初始化。

    XStartup介绍

    github地址:https://github.com/CyanFlxy/XStartup

    XStartup基于 startup 进行了二次开发,针对国内官方要求以及应用启动模型进行优化修改。

    支持的新特性

    1. 初始化时添加debug开关状态。
    2. 支持推迟执行敏感操作。
    3. 支持推迟执行非重要操作。
    4. 支持IdleHandler和子线程两种延时执行方案。

    使用方法

    Library中
    在Manifest中进行注册Initializer接口实现:

    <provider
        android:name="com.cyanflxy.xstartup.InitializationProvider"
        android:authorities="${applicationId}.xstartup"
        android:exported="false"
        tools:node="merge">
        <meta-data
            android:name="[InitializerImpl]"
            android:value="xstartup"/>
    </provider
    

    宿主App中
    XStartup中的初始化逻辑(Initializer接口)被拆分为了三个方法,其作用分别如下:

    1. init1-仅对Context、debug开关等进行简单初始化操作。
    2. init2-可以执行敏感操作,必须执行重要操作。
    3. init3-可以执行耗时操作,可以执行不重要操作。

    但是在XStartup SDK中,只有init1是自动执行的,另外两个需要宿主App触发执行。可以参考如下规则:

    1. 在用户同意《用户协议》之后执行XStartup.init2方法。
    2. 在主界面的onWindowFocusChanged方法中执行XStartup.init3方法。

    备注

    工信部要求,一些敏感操作必须在征得用户同意之后执行。敏感行为包括但不限于以下内容:

    1. 读取imei、imsi、oaid等设备信息
    2. 读取应用安装列表
    3. 进行联网操作

    相关文章

      网友评论

          本文标题:StartUp介绍以及优化

          本文链接:https://www.haomeiwen.com/subject/bovvoltx.html