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

安卓App多次启动失败闪退,附logcat及相关代码求排查

问题排查及解决方案

核心闪退原因

你在MainActivity中声明了全局延迟初始化变量madapter,但onCreate方法里仅创建了一个局部变量adapter,没有给全局的madapter完成赋值。后续给RecyclerView设置适配器、以及接口请求成功后调用madapter.updateNews时,都会触发未初始化属性访问异常,直接导致应用闪退。

其他潜在问题

  • 你在适配器还没有完成初始化的时候就先调用了fetchData(),如果网络请求返回速度快于适配器初始化流程,也会触发空引用异常
  • 请求URL里的API_KEY是占位符,没有替换成你在NewsAPI平台申请的有效密钥,会导致接口请求失败
  • 未在AndroidManifest.xml中添加网络权限,会导致网络请求被系统拦截

修复步骤

1. 修复适配器初始化逻辑

修改onCreate内的代码,把实例化的适配器赋值给全局的madapter,同时调整执行顺序,先完成适配器初始化再调用数据请求方法:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    recyclerView.layoutManager=LinearLayoutManager(this)
    // 给全局madapter赋值,不要创建无意义的局部变量
    madapter = NewsListAdapter(this)
    recyclerView.adapter = madapter
    // 等适配器初始化完成后再请求数据
    fetchData()
}

2. 替换有效API密钥

把fetchData方法中URL里的API_KEY替换成你自己在NewsAPI官网申请的有效密钥。

3. 添加网络权限

在AndroidManifest.xml的manifest标签下(注意不要放在application标签内部)添加网络权限声明:

<uses-permission android:name="android.permission.INTERNET" />

补充说明

logcat里出现的com.mediatek.cta.CtaUtils相关报错是联发科设备的系统类缺失提示,和应用本身的业务逻辑无关,不会影响应用正常运行,无需处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:27:02