4G网络下Firebase认证耗时久、Firestore查询无数据问题排查
Firebase认证与Firestore数据获取问题排查
问题现象
- 4G移动数据环境下,Firebase认证耗时极长(最高达10分钟),需通过Manifest文件跳过应用内认证流程
- Firebase Firestore无法获取任何数据
系统日志(与Firebase问题无关,可忽略)
2022-11-03 05:30:59.981 453-473/? W/TransactionTracing: Could not find layer id -1 2022-11-03 05:31:00.114 453-473/? W/TransactionTracing: Could not find layer handle 0x7f187c234bf0
代码错误排查
1. 缺失必要导入
当前代码缺少多个关键类的导入,会导致编译或运行异常:
- FirebaseAuth核心类:
com.google.firebase.auth.FirebaseAuth - 认证结果类:
com.google.firebase.auth.AuthResult - 失败监听类:
com.google.android.gms.tasks.OnFailureListener - 取消监听类:
com.google.android.gms.tasks.OnCanceledListener - 页面跳转相关类:
android.content.Intent
2. 认证代码语法错误
signInWithEmailAndPassword的监听注册存在语法错误,多余的右括号会导致编译失败:
// 错误写法:多了一个右括号 .addOnCompleteListener(new OnCompleteListener<AuthResult>()){ // 正确写法 .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
同理,addOnCanceledListener也存在相同的语法错误:
// 错误写法 .addOnCanceledListener(new OnCanceledListener()){ // 正确写法 .addOnCanceledListener(new OnCanceledListener() {
3. Firestore查询的致命空指针错误
Firestore查询成功后的处理逻辑中,集合未初始化就调用add方法,直接触发空指针异常,导致数据无法正常处理:
// 错误写法:集合为null,调用add会崩溃 AbstractCollection<MyProducts> popularModelList = null; popularModelList.add(popularItem); // 正确写法:初始化集合,且建议将集合设为类成员变量(避免每次循环重建丢失数据) ArrayList<MyProducts> popularModelList = new ArrayList<>();
4. 认证逻辑细节问题
progressBar未看到控件绑定代码(findViewById),可能触发空指针- 登录成功时未隐藏
progressBar,用户体验差 - 错误提示信息无效:
"Error"+ task.isSuccessful()只会显示Errorfalse,应改为显示异常详情:task.getException().getLocalizedMessage()
5. 4G环境认证慢的可能原因
代码层面无直接导致认证延迟的逻辑,建议排查:
- Firebase项目的区域设置是否与用户所在区域接近
- 设备4G网络的DNS解析是否正常
- 确认Firebase SDK版本是否为最新稳定版
内容的提问来源于stack exchange,提问作者Me Compu
相关产品推荐
相关产品推荐

