You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 如何判断SharedPreferences值为空或null避免应用闪退

SharedPreferences读取无对应值时崩溃修复方案

崩溃原因

你当前的取值逻辑设置了默认返回值为空字符串"",崩溃通常是后续业务逻辑拿到空值后没有做有效性校验,直接调用字符串方法、作为参数传给接口、或者赋值给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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:27:04