Skip to content

偶发崩溃:Please call the AutoSizeConfig#init() first #47

@yangchong211

Description

@yangchong211

我也遇到过类似的问题,报错日志:Please call the AutoSizeConfig#init() first
崩溃场景:华为,小米等多部手机没问题,后来公司同事用乐视手机就出现这个崩溃
解决办法:注释掉setAutoAdaptStrategy(new AutoAdaptStrategy())方法就不会崩溃了
查看代码:

//第一步:查看源码有两个地方有这个文字提示
Preconditions.checkNotNull(mApplication, "Please call the AutoSizeConfig#init() first");
Preconditions.checkNotNull(mActivityLifecycleCallbacks, "Please call the AutoSizeConfig#init() first");

//第二步:再进去看代码如下所示
//可知传进来的reference为null空值导致出现问题
    public static <T> T checkNotNull(T reference, Object errorMessage) {
        if (reference == null) {
            throw new NullPointerException(String.valueOf(errorMessage));
        } else {
            return reference;
        }
    }

//第三步:查看什么时候创建mApplication和mActivityLifecycleCallbacks对象
//mActivityLifecycleCallbacks对象是在AutoSizeConfig类中的init方法中创建的,第206行
//mApplication对象实在AutoSizeConfig类中init方法中赋值的,第171行
//而init初始化的操作又是在InitProvider类中的onCreate方法中初始化的,(Application) getContext().getApplicationContext()获取全局application会不会出现问题呢?而这个需要的application上下文能否让开发者传递进来呢?

    @Override
    public boolean onCreate() {
        AutoSizeConfig.getInstance()
                .setLog(true)
                .init((Application) getContext().getApplicationContext())
                .setUseDeviceSize(false);
        return true;
    }

出现bug原因分析
还不清楚,很奇怪,希望得到大神解答

崩溃日志信息

java.lang.RuntimeException: Unable to create application com.paidian.hwmc.base.SophixStubApplication: java.lang.NullPointerException: Please call the AutoSizeConfig#init() first
                                                     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5210)
                                                     at android.app.ActivityThread.-wrap3(ActivityThread.java)
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659)
                                                     at android.os.Handler.dispatchMessage(Handler.java:111)
                                                     at android.os.Looper.loop(Looper.java:207)
                                                     at android.app.ActivityThread.main(ActivityThread.java:5981)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749)
                                                  Caused by: java.lang.NullPointerException: Please call the AutoSizeConfig#init() first
                                                     at me.jessyan.autosize.utils.Preconditions.checkNotNull(Preconditions.java:77)
                                                     at me.jessyan.autosize.AutoSizeConfig.setAutoAdaptStrategy(AutoSizeConfig.java:247)
                                                     at com.paidian.hwmc.base.BaseApplication.initAutoSizeConfig(BaseApplication.java:385)
                                                     at com.paidian.hwmc.base.BaseApplication.onCreate(BaseApplication.java:133)
                                                     at com.taobao.sophix.a.c.b(Sophix:722)
                                                     at com.taobao.sophix.a.e.a(Sophix:177)
                                                     at com.taobao.sophix.SophixApplication.onCreate(Sophix:17)
                                                     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1018)
                                                     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5207)
                                                     at android.app.ActivityThread.-wrap3(ActivityThread.java) 
                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659) 
                                                     at android.os.Handler.dispatchMessage(Handler.java:111) 
                                                     at android.os.Looper.loop(Looper.java:207) 
                                                     at android.app.ActivityThread.main(ActivityThread.java:5981) 
                                                     at java.lang.reflect.Method.invoke(Native Method) 
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888) 
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:749) 

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions