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
相关产品推荐
相关产品推荐

