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

MVVM架构Android项目中MyFirebaseMessagingService文件放置位置咨询

Firebase Cloud Messaging服务类的放置位置建议

你的MyFirebaseMessagingService属于和平台绑定的全局服务组件,结合MVVM架构的职责划分,推荐两种合理的放置方案:

方案1:新增顶级service目录

在src下单独创建一个顶级目录,专门存放全局应用级服务、基础组件:

src
 \_ domain
     \_ model
     \_ repository
          \_ ItemsRepository
 \_ data
     \_ repository
          \_ ItemsRepositoryImpl
 \_ presentations
     \_ items
          \_ ItemsScreen
          \_ ItemsViewModel
 \_ service  # 新增全局服务目录
     \_ MyFirebaseMessagingService
  • 优势:这类推送服务不绑定具体业务逻辑,单独存放能让项目结构更清晰,避免和业务模块混叠。

方案2:归入data层的远程服务子目录

如果希望把所有和外部服务交互的代码统一放在data层,可以在data下新增remote或service子目录:

src
 \_ domain
     \_ model
     \_ repository
          \_ ItemsRepository
 \_ data
     \_ repository
          \_ ItemsRepositoryImpl
     \_ remote  # 新增远程服务子目录
          \_ MyFirebaseMessagingService
 \_ presentations
     \_ items
          \_ ItemsScreen
          \_ ItemsViewModel
  • 优势:Firebase推送本质是和外部远程服务的交互,归入data层符合MVVM中data层负责数据获取、外部服务对接的职责定位。

额外提醒

  • 不管选哪种方案,都要在AndroidManifest.xml里正确注册该服务,配置对应的intent-filter。
  • 如果后续需要处理推送相关的业务逻辑(比如收到推送后更新本地数据),别直接在服务类里写业务代码,通过依赖注入调用domain层的仓库,或者委托给ViewModel处理,保持服务类只负责消息的接收和分发。

内容的提问来源于stack exchange,提问作者Always Learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:16:59