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

Android废弃Tasks.call方法替代方案求助,适配Google Drive备份原有逻辑

可行替换方案

你之前用TaskCompletionSource的思路是正确的,仅需要调整TaskCompletionSource的创建位置,在子线程执行前完成实例化并提前返回关联的Task对象即可,完全不需要修改上层调用逻辑。

修正后的queryFiles实现代码

public Task<FileList> queryFiles() {
    // 提前创建TaskCompletionSource,获取待返回的Task实例
    TaskCompletionSource<FileList> taskCompletionSource = new TaskCompletionSource<>();
    // 沿用原有的mExecutor执行异步任务,保持和原有逻辑一致的执行环境
    mExecutor.execute(() -> {
        try {
            FileList result = mDriveService.files().list().setSpaces("drive").execute();
            // 执行成功设置结果,自动触发上层addOnSuccessListener回调
            taskCompletionSource.setResult(result);
        } catch (IOException e) {
            // 捕获异常传递给Task,自动触发上层addOnFailureListener回调
            taskCompletionSource.setException(e);
        }
    });
    // 直接返回Task对象,方法签名完全不变
    return taskCompletionSource.getTask();
}

方案说明

  • 方法返回值、签名完全和原有实现一致,BackupActivity中的调用逻辑不需要做任何修改
  • 异常传递逻辑和原Tasks.call完全对齐,原有成功、失败的监听回调都可以正常工作
  • 仅修改queryFiles内部实现,不需要重写整个DriveServiceHelper类,改造成本极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:15:08