美文网首页
SharedPreferences空指针 on a null o

SharedPreferences空指针 on a null o

作者: 子非鱼7868 | 来源:发表于2018-12-07 16:16 被阅读11次

    今天刚开始写项目,遇到SharedPreferences空指针闪退,背景是我从闪屏跳到登录页

    protected void gotoNextActivity(){
    boolean isUserGuide = PrefUtils.getBoolean("is_user_guide_show",false);
    if (isUserGuide){
    startActivity(new Intent(SplashActivity.this,LoginActivity.class));
    }else{
    }
    finish();
    }

    结果报错: 1.png

    因为我改了包名,作为一个菜鸟,我一直以为是包名被改的问题,我就逐个检查了我的包名(确实有两个没改),然后运行,还是一样闪退

    我把gotoNextActivity()里的代码都注销 只留一个startActivity()结果是可以跳转的.gotoNextActivity()里的代码除了跳转,只剩下

    7.png
    看到报错日志里有 2.png
    3.png 通过这两个地方,我感觉是SharedPreferences 出了问题,我就在工具类里找,工具类里就一个方法,一点问题没有 8.png

    我网上看了SharedPreferences 还没有增加对多进程的支持牵扯到进程,问题越来越有意思了,对于菜鸟而言,问题越来越懵逼了......

    android应用在被启动时,对应的进程的进程名一般就是包名。android应用一般是运行在自己的进程中,除非通过AndroidManifest.xml中application定义中通过android:process字段指定运行在其他进程中(这种机制有特殊限定条件)。

    直到网上看到这句话,我突然想起来,我为了防止方法数 dex 达到上线 添加了分包 我的Application是继承MultiDexApplication

    4.png
    但是我在AndroidManifest.xml主配置清单里没有设置application android:name字段指定android:name=".application.MyApplication"
    我认为我在使用SharedPreferences的时候用的是MyApplication 但是我没设置android:name字段,所以等于是两个Application,导致SharedPreferences报错(个人理解)

    修改主配置清单AndroidManifest.xml
    在<application下增加 android:name=".application.MyApplication"
    问题解决

    相关文章

      网友评论

          本文标题:SharedPreferences空指针 on a null o

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