Android应用报资源未调用close警告及ResourcesManager错误闪退如何处理
问题排查与解决方案
一、"a resource failed to call close"警告修复
你的代码只在onStart生命周期方法中注册了FirebaseAuth.AuthStateListener,但没有在对应生命周期结束时移除该监听器,会导致Firebase相关资源无法正常释放,触发资源未关闭警告。
修复方案:在MainActivity中添加onStop生命周期方法,移除监听器:
@Override protected void onStop() { super.onStop(); if (mAuthStateListener != null) { auth.removeAuthStateListener(mAuthStateListener); } }
二、"Failed to instrument: android/app/ResourcesManager" 闪退问题修复
这个错误和你的业务代码关联度极低,是构建缓存、模拟器配置或者Android Studio运行配置导致的问题,按以下步骤逐一排查即可:
- 清理构建缓存:依次点击Android Studio菜单栏
Build -> Clean Project再执行Build -> Rebuild Project,重启应用测试 - 关闭运行时 instrumentation 相关配置:打开
Run/Debug Configurations,找到你的应用模块,在Profiling标签页下取消勾选Enable advanced profiling选项,重启应用测试 - 禁用资源压缩测试:打开应用级
build.gradle文件,将minifyEnabled和shrinkResources临时改为false,重新构建运行测试 - 重置模拟器数据:不需要重新下载AVD,打开AVD管理器,点击对应模拟器右侧的下拉箭头,选择
Wipe Data擦除所有数据后重启模拟器即可
补充注意点
你当前的AuthStateListener逻辑里,检测到已登录用户就直接调用finish()关闭当前页面,没有指定跳转的目标页面,如果后续需要跳转到其他页面记得补全对应的startActivity逻辑,避免出现登录后直接退到桌面的问题。
内容的提问来源于stack exchange,提问作者aikagra
相关产品推荐
相关产品推荐

