如何避免重复常见的可观察配置?

2024-01-14

我正在使用 Retrofit 在 Android 中编写一个 API 客户端,这种代​​码会重复很多次:

myObservableFromRetrofit
  .subscribeOn(Schedulers.io())
  .observeOn(AndroidSchedulers.mainThread())
  .doOnError(... print stack trace ...)

我想知道是否有一种技术可以避免重复这些事情。

我通过以下方式围绕对改造功能的调用:

public Observable<?> commonObservable(Observable<?> observable) {
  return observable
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .doOnError(... print stack trace ...)
}

但这会丢失泛型类型信息。


您应该使用 compose() 运算符,而不是包装您的 Observables,详细信息请参阅这篇博文 http://blog.danlew.net/2015/03/02/dont-break-the-chain/。所以你会有:

<T> Transformer<T, T> applySchedulers() {  
    return observable -> observable.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(... print stack trace ...)
}

你可以这样称呼它:

myObservableFromRetrofit
    .compose(applySchedulers())

或者,如果您在 JDK 8 以下进行编译:

myObservableFromRetrofit
    .compose(this.<YourType>applySchedulers())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免重复常见的可观察配置? 的相关文章

  • 如何为ScrollView放置固定图像背景?

    我应该想要滚动视图滚动 而不是背景中的图像 将图像添加到滚动视图框架之前的视图层次结构的较高位置
  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时

随机推荐

  • URIencode 和冒号

    冒号是一个可以根据许多站点编码为 3A 的字符 当我尝试使用编码时URIencode它不工作 例如 如果我尝试编码URIencode 然后什么也没有发生 返回冒号 为什么是这样 有人可以帮我吗 提前致谢 The encodeURI 对特殊字
  • 如何运行 Alamofire 库

    I downloaded the alamofire library and opened the iOS Example xcodeproj but it won t run In import Alamofire when i comm
  • 到 Task.Run 或不到 Task.Run

    假设我有一个包含异步方法的接口 并且该接口有两个不同的实现 这两种实现之一自然是异步的 而另一个则不是 实现非异步方法的 最正确 方法是什么 public interface ISomething Task
  • 无法在 xcode 崩溃报告中找到发生崩溃的代码

    我在 x code 中收到了几个崩溃报告 由用户报告 但无法找出它的用途 我在项目中打开它 但它没有显示发生崩溃的代码行 显然我尝试单击堆栈跟踪的每一行 如果您想在已发布的版本中触发崩溃 那么您应该将崩溃报告程序集成到您的项目中 并且Cra
  • 如何检查两个异步任务是否成功完成

    在函数中实现此流程图的最佳和最简单的方法是什么 现在我正在使用两个调度组 但我需要检查它们是否都已完成 而不仅仅是它们何时完成 如果他们完成了 那么 Friends 数组将包含元素 昵称数组将包含元素 注 FB是Facebook FIR是F
  • Python-读取具有不同分隔符的数据文本文件

    我有一个文件 其中字段由 分隔 子字段由 分隔 子字段中的项目由 分隔 我想读Python 一段时间后 我可能可以逐行阅读它 然后分割所有内容 但我相信这种事情已经存在了 文件的一行 0 16 250 1 0 053 RIG DIS 1 4
  • Prism - EventAggregator.GetEvent<>.Subscribe() - 使用泛型和约束

    我在使用作为棱镜框架一部分的事件聚合器订阅事件时遇到问题 如果我使用诸如 eventAggregator GetEvent
  • 无法从控制台将 .csv 导入 Cloud SQL

    我尝试了多种方法将 csv 文件导入 Cloud SQL PostgreSQL 但没有成功 psql f import sql 不起作用 它说我必须是超级用户才能导入 但 copy 有效 所以我尝试了 copy 但失败了 我得到 postg
  • 在 OpenLayers 3.20+ 中使用 view.fit() 使用 view.animate()

    我有以下为 OpenLayers 3 20 之前版本编写的代码 fitViewToFeature function viewer feature var pan ol animation pan source viewer olView g
  • .NET Core 是否有任何等效的 GAC?

    据我目前在完整 NET Framework 中的了解 当我们将框架安装到计算机上时 它将整个 BCL 部署到计算机的 GAC 中 这样 当我们使用 NET 开发软件并将其部署到该计算机时 它将使用 BCL 程序集 这些程序集在安装 NET
  • 嵌入式 dylibs/frameworks 仅支持 iOS 8.0 及更高版本的架构 armv7

    我刚刚从 Xcode 6 4 升级到 Xcode 7GM 现在在运行旧项目时收到以下警告 embedded dylibs frameworks are only supported on iOS 8 0 and later rpath xx
  • 是否可以迭代多个枚举类?

    我有三个枚举类 我想以某种方式将它们放入一个数组中 循环遍历该数组并在每个枚举类中调用相同的方法 这在Java中可能吗 在我看来 你不能将枚举类型放置在数组结构中 除非我错过了如何放置 谢谢 让每个枚举类型实现一个通用接口具有常用方法您想要
  • 两个视图控制器之间viewDidAppear和viewDidDisappear的回调顺序

    据我所知 至少有两种方法可以在另一个 UIViewController 上呈现 UIViewController 第一种是在 UIViewController 上使用 presentModalViewController animated
  • 如何在 NoteBook 之外的 pyspark 作业中使用 dbutils 命令

    我想使用 dbutils 命令来访问通过 Databricks 上的作业内的 Spark Submit 提交的 pyspark 作业中的机密 使用 dbutils 命令时 出现错误 dbutils not Defined 除了笔记本之外 还
  • 如何指定emacs中ESS会话打开的R版本? [复制]

    这个问题在这里已经有答案了 当我想在 emacs 中打开 R 会话时 我使用M x R 但是 我们的服务器在 usr bin R 中有 R 2 12 在 usr local bin R 中有 R 2 15 事实上 如果我问whereis R
  • android studio 将Json解析为字符串

    我有这个 JSON 对象 1 id module f83d6101cc adresse mac 00 6A 8E 16 C6 26 mot de passe mp0001 name a 2 id module 64eae5403b adre
  • 在服务器上运行选项未出现在 Eclipse 中

    我正在学习 SpringMVC 框架并查看了他们的代码副本 https src springframework org svn spring samples mvc basic trunk https src springframework
  • Hibernate:插入问题 - 找不到父键

    我在将实体插入数据库时 遇到问题 我正在使用 Hibernate JPA 这是我的数据库结构 Table User CGU USER ID as PK Table Industries CGI INDUSTRY ID PK CGI INDU
  • PHP 中带有类型提示的动态返回类型?

    对于标准方法 我知道可以在注释中指定返回类型 例如 Load this entity from the database with the specified primary key param int Key return BaseEnt
  • 如何避免重复常见的可观察配置?

    我正在使用 Retrofit 在 Android 中编写一个 API 客户端 这种代 码会重复很多次 myObservableFromRetrofit subscribeOn Schedulers io observeOn AndroidS