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

OPPO A91(Android11)及低端国产设备Firebase通知延迟伴ANR问题求助

Firebase推送通知在OPPO及低端国产设备上严重延迟问题排查与解决建议

问题概述

开发的视频门禁APP在OPPO及其他低端国产设备上,Firebase通知的发送与接收存在严重延迟,但仅包含Firebase服务的空测试APP接收通知仅需1-2秒。

复现条件

  • 杀死APP并锁屏后,接收通知需25秒
  • 屏幕解锁或设备充电时,接收通知需5秒

已排查信息

  • 项目大量使用Hilt,怀疑与应用初始化流程有关
  • 日志中发现ANR_LOG >>> msg's executing time is too long的异常提示
  • 相关清单权限:
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
  • Firebase消息服务配置:
<service
    android:name=".service.PushNotificationService"
    android:exported="false"
    android:directBootAware="true">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>
  • Firebase依赖配置:
const val firebaseBom = "31.1.0"
implementation(platform(Deps.firebaseBom))
implementation(Deps.firebaseAnalytics)
implementation(Deps.firebaseCrashlytics)
implementation(Deps.firebaseMessaging)
implementation(Deps.firebaseDynamicLink)
implementation(Deps.firebasePerf)
implementation("com.google.firebase:firebase-messaging-directboot:23.1.0")
  • google-services版本:4.3.14

已尝试的解决方法

  • 更新Firebase及相关依赖
  • 为消息服务添加directBootAware配置
  • 设置通知为高优先级
  • 授予APP所有权限并关闭设备省电模式

针对性解决建议

  1. 优化消息接收时的初始化逻辑
    检查PushNotificationService的onMessageReceived方法,避免在该方法内执行耗时操作(如Hilt依赖注入、数据库读写、网络请求等)。所有非紧急逻辑必须放到后台线程(如CoroutineScope或AsyncTask)执行,防止触发ANR导致通知处理延迟。

  2. 调整Hilt初始化策略
    如果Application的onCreate中包含大量Hilt初始化逻辑,在进程被后台拉起时会大幅增加启动耗时。建议:

    • 对非核心组件使用懒加载(Hilt的@Lazy注解)
    • 将部分初始化逻辑延迟到首次使用时执行,而非Application启动阶段
  3. 适配国产ROM后台限制
    OPPO等低端国产设备有严格的后台管控策略,仅关闭省电模式不足以解决问题,需引导用户开启以下权限:

    • 自启动权限
    • 后台弹窗权限
    • 关联启动权限
    • 忽略电池优化权限(已申请权限,需确保用户实际授予)
  4. 排查ANR具体触发点
    从ANR日志中定位具体耗时方法,重点检查是否在主线程执行了阻塞操作,比如同步网络请求、大文件IO等,将这些操作迁移到后台线程。

  5. 升级依赖版本
    当前使用的Firebase BOM(31.1.0)和google-services(4.3.14)均非最新稳定版,建议升级到最新版本:

    • Firebase BOM可更新至最新稳定版(如32.7.0)
    • google-services更新至4.4.1或更高版本,修复已知兼容性问题
  6. 优化FCM消息发送配置

    • 确保发送的是高优先级数据消息,而非通知消息(通知消息由系统进程处理,后台限制更严格)
    • 在FCM请求中明确设置priority: high(Android平台),确保系统优先唤醒APP处理消息

内容的提问来源于stack exchange,提问作者Marco Dalla Bà

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:01:11