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

如何在前台服务中结合RxJava3与Retrofit实现异步请求并展示通知

问题排查点

  • 接口请求参数错误
    你当前调用getDayNewsRxJava时传入的两个参数都是硬编码的固定字符串"language"和"apiKey",完全不符合接口要求:
    1. 接口定义的第一个Query参数是country,需要传入合法的国家/地区码,比如"us"、"cn",不是字符串"language"
    2. 第二个参数需要传入你在newsapi平台申请的真实有效ApiKey,不是字符串"apiKey"
      错误的参数会直接导致接口返回400/401类错误,走onError回调。
  • 多余的@Streaming注解
    @Streaming是用于大文件下载场景的注解,普通JSON接口不需要添加。加了该注解后Gson解析响应时会按流处理,无法正常解析完整JSON结构,会触发解析异常。
  • 先确认回调执行情况
    先查看Logcat的输出:
    1. 如果有Rx Java Error日志:打印e?.printStackTrace()查看完整异常堆栈,就能直接定位具体错误原因(是网络不通、权限缺失、解析失败还是参数错误)
    2. 如果有Rx Java Data日志但没收到通知:说明请求已经成功,问题出在通知发送逻辑,Android 8.0及以上系统必须先创建合法的通知渠道,才能正常展示通知
  • 权限检查
    1. 清单文件必须添加android.permission.INTERNET权限,否则无法发起网络请求
    2. 如果你使用的是Android 12及以上系统,前台服务需要根据用途申请对应的前台服务权限,比如android.permission.FOREGROUND_SERVICE_DATA_SYNC
    3. 国内网络环境无法直接访问newsapi.org,需要确认网络连通性
  • 依赖和配置检查
    1. 确认RxJava3相关依赖导入完整,且RxJava3CallAdapterFactory的依赖版本和Retrofit版本匹配,没有错用RxJava2的CallAdapter
    2. 检查混淆规则,确保Model1相关类没有被混淆,否则Gson会解析失败
    3. 可以持有请求返回的Disposable对象,避免订阅被GC提前回收导致请求中断

内容的提问来源于stack exchange,提问作者Mert Krgl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:54:00