AndroidAutoSize icon indicating copy to clipboard operation
AndroidAutoSize copied to clipboard

建议使用 Android Jetpack 组件里的 App Startup 库来初始化

Open DysaniazzZ opened this issue 2 years ago • 3 comments

Environment

  • [x] Autosize Version:
  • v1.2.1

Related Code:

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

<provider
    android:name="me.jessyan.autosize.InitProvider"
    android:authorities="${applicationId}.autosize-init-provider"
    tools:node="remove" />

class AutoSizeInitializer : Initializer<Unit> {
    override fun create(context: Context) {
        AutoSizeConfig.getInstance()
            .setLog(true)
            .init(context.applicationContext as Application)
            .isUseDeviceSize = false
    }

    override fun dependencies(): List<Class<out Initializer<*>>> {
        return emptyList()
    }
}

目前的问题是 AutoSizeConfig.init() 方法是默认作用域,不修改源码无法将该库的初始化整合到一个集中的 InitProvider 里面。

DysaniazzZ avatar Oct 18 '22 08:10 DysaniazzZ

https://github.com/JessYanCoding/AndroidAutoSize/issues/249

JessYanCoding avatar Oct 20 '22 07:10 JessYanCoding

跟这个 case 不太一样,我是想在 ContentProvider 初始化的。不过我想把这些三方库合并到一个 androidx.startup.InitializationProvider 来初始化。现在的问题是在我自己的初始化里是调用不了 AutoSizeConfig.init() 的,因为 init 方法是默认作用域。 不过我可以新建一个同名包下的类,来做个 workaround:

package me.jessyan.autosize;

import android.app.Application;

public class AutoSizeUtil {
    public static void init(Application app) {
        AutoSizeConfig.getInstance().init(app);
    }
}

DysaniazzZ avatar Oct 25 '22 01:10 DysaniazzZ

AutoSize.checkAndInit(this); 这个是静态的

hezhipengzipp avatar Dec 01 '23 09:12 hezhipengzipp