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

Android Studio中自定义MyApplication单例调用空指针异常如何解决?

问题排查与解决方法

核心触发原因

你遇到的空指针90%以上是因为MyApplication里的生命周期方法名拼写错误:

你写的是public void OnCreate(),首字母O大写,而Android Application类的系统回调生命周期方法是小写o开头的onCreate(),系统识别不到你自定义的大写开头的方法,所以不会执行方法内的初始化逻辑,myLocations始终为null,调用getMyLocations()自然返回空值。

修复步骤

  • 第一步:修正OnCreate方法的方法名,加上@Override注解避免后续再出现拼写错误:
@Override
public void onCreate() {
    super.onCreate();
    singleton = this;
    myLocations = new ArrayList<>();
}
  • 第二步:检查AndroidManifest.xml的<application>标签,是否配置了android:name属性指向你的自定义Application类,如果没加要补上,否则系统不会加载你写的MyApplication:
<application
    android:name=".MyApplication"
    <!-- 其他原有配置比如icon、label、theme等保持不变 -->
    >
    <!-- 四大组件配置保持不变 -->
</application>
  • 第三步(非必选优化项):把getInstance方法改成静态的,后续可以直接静态调用获取实例,不需要每次强转上下文,避免强转出错:
public static MyApplication getInstance(){
    return singleton;
}

优化后可以直接调用MyApplication.getInstance().getMyLocations(),调用逻辑更安全。

其他可能的排查点

如果做完上面两步还是有空指针,可以按下面顺序排查:

  • 检查调用getMyLocations()的时机是否过早,比如在Activity的attachBaseContext阶段就调用,这时候Application的onCreate还没执行完,未完成初始化
  • 检查混淆配置是否把自定义Application类的方法混淆掉了,可在混淆规则里加上-keep class 你的MyApplication全类名 {*;}规避问题

内容的提问来源于stack exchange,提问作者CanonSAS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:01