如何使用Google Play服务任务API为Firebase创建自定义任务

Fab*_*cio 5 android firebase

我想在firebase中创建此类自定义任务,以便链接我的API异步调用。我该如何实现?

Dou*_*son 5

有几种使用Play服务任务API创建自定义任务的方法。

首先,有Tasks.call(Callable)。传递给您的Callable计划立即在主线程上执行,并且您将获得一个Task,并带有Callable返回类型的通用参数。此任务使用该返回值成功解析,如果Callable抛出异常,则返回错误。

另一个方法是Tasks.call(Executor,Callable),与其他方法完全一样,不同之处在于,将给定的callable安排在给定的Executor管理的线程上立即执行。查找或创建适合您工作的执行器由您决定。

最后,还有TaskCompletionSource,它使您可以创建一个Task并根据与该Task没有直接关系的其他某些工作的结果手动将其解析为成功或失败。

有关更多详细信息,请查看我有关“任务”的博客系列。我将在第三部分第四部分中介绍这些方法。


JP *_*ura 5

假设你有一个Document类,你可以这样做:

创建成功解决的任务

Tasks.<Document>forResult(document);
Run Code Online (Sandbox Code Playgroud)

创建失败的任务

Tasks.forException(new RuntimeException("Cool message"));
Run Code Online (Sandbox Code Playgroud)

从可调用创建

interface CreateDocument extends Callable<Document> {
    @Override
    Document call();
}
Tasks.call(new CreateDocument());
Run Code Online (Sandbox Code Playgroud)

使用任务完成源创建

Task<Document> createDocument() {
    TaskCompletionSource<Document> tcs = new TaskCompletionSource();
    if (this.someThingGoesWrong()) {
        tcs.setException(new RuntimeException("Cooler message"));
    } else {
        tcs.setResult(Document.factory());
    }

    tcs.getTask();
}
Run Code Online (Sandbox Code Playgroud)