主线程改造调用的最佳方式

问题描述 投票:0回答:1

我正在尝试改进其他开发人员编写的一些 Java Android 代码。

此 API 调用在应用程序中进行了多次

@GET("/api/v1/smb/machines/{machineName}")
Call<TLPJsonData<MachineData>> getMachineInfo(@Path("machineName") String machineName);

每次此代码都会有一些变化

SMBAPI.get().getMachineInfo(DeviceManager.getMachineName()).enqueue()

(我已经删除了 onResponse() / onFailure() 代码,所以这篇文章不是很长。)

我想知道最好的方法来创建一个类,该类可以通过错误处理等进行 API 调用,然后允许将调用结果返回到主线程,以便我可以移动本质上是样板代码的内容在应用程序中将其复制四次到一个类中。

我猜 RxJava 和/或 Observables 是解决这个问题的方法,但在我陷入困境之前,我想要一些关于如何实现它的见解/指导。

谢谢

有钱

java android api observable retrofit
1个回答
0
投票

如果您正在使用 Java 但不想使用 RxJava,那么您可以使用

CompletableFuture
。将您的 Api 服务更改为:

@GET("/api/v1/smb/machines/{machineName}")
CompletableFuture<TLPJsonData<MachineData>> getMachineInfo(@Path("machineName") String machineName);

现在您可以像这样轻松地使用

CompletableFuture

final CompletableFuture<AccessToken> machineInfo = SMBAPI.get(). getMachineInfo(DeviceManager.getMachineName());

然后你就可以使用

Future
的很多功能了,如下所示:

machineInfo.handle((result, throwable) -> {
      // work with result or throwable, you can use exceptionally function as well
    }

搜索

CompletableFuture
以找到适合您情况的有用功能。

© www.soinside.com 2019 - 2024. All rights reserved.