美文网首页
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