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

如何在Activity的attachBaseContext方法中获取自定义Application实例

问题根因

空指针是Android组件生命周期的固有顺序导致的:Activity.attachBaseContext() 执行阶段,系统还未完成Application实例与Activity的绑定,此时调用getApplication()必然返回null,和你依赖注入的实现逻辑无关。
你自定义Application中的attachBaseContext逻辑是正常的,因为Application类的成员变量appContainer是类加载阶段就完成初始化的,早于Application自身的attachBaseContext调用时机,所以不会有空指针问题。

解决方案

直接从attachBaseContext传入的base参数中获取ApplicationContext即可,Application实例在进程启动时就已经完成初始化,ApplicationContext在该阶段已经可以正常获取:

@Override
protected void attachBaseContext(Context base) {
    AlgyrApp app = (AlgyrApp) base.getApplicationContext();
    super.attachBaseContext(app.appContainer.localeManager.setLocale(base));
}
注意事项

请确认你已在AndroidManifest.xml的application节点配置了android:name=".application.AlgyrApp",否则强转时会抛出类型转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:45:07