Android 如何判断SharedPreferences值为空或null避免应用闪退
崩溃原因
你当前的取值逻辑设置了默认返回值为空字符串"",崩溃通常是后续业务逻辑拿到空值后没有做有效性校验,直接调用字符串方法、作为参数传给接口、或者赋值给UI组件时不符合预期触发的。
具体修复方案
- 首先使用
contains()方法判断是否存在对应key,避免默认值干扰判断:该方法可以直接校验SharedPreferences中是否存储过orderNO这个键的值,比后续判断返回值是否为空更准确,也能兼容你主动存储空字符串的特殊业务场景。 - 取值后做空安全校验再执行业务逻辑,示例代码如下:
// 先判断是否存在对应key if (sharedPreferences.contains("orderNO")) { String lastOrder = sharedPreferences.getString("orderNO", ""); // 二次校验返回值是否有效 if (!TextUtils.isEmpty(lastOrder)) { // 有有效订单,执行展示、查询等原有逻辑 } else { // 存储的订单值为空,走无订单兜底逻辑 } } else { // 未存储过订单信息,走无订单兜底逻辑 }
注意事项
- 即使
getString()方法传入了默认返回值,跨进程读写SharedPreferences的异常场景下仍有可能返回null,必须做非空校验再使用返回值,不要直接调用length()、trim()等字符串方法。 - 若使用Kotlin开发,建议用可空类型接收返回值,配合空安全调用符
?.处理,进一步降低崩溃概率。
内容的提问来源于stack exchange,提问作者roshanpeter
相关产品推荐
相关产品推荐

