gpt4 book ai didi

Android 已弃用 Tasks.call - 替换

转载 作者:行者123 更新时间:2023-12-02 18:27:23 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我可以选择将数据库备份到 Google 云端硬盘。为此,我正在使用 DriveServiceHelper 类,但我刚刚注意到,在 Android 11 中,Task.call 已被弃用。

      public Task<FileList> queryFiles() {
return Tasks.call(mExecutor, () ->
mDriveService.files().list().setSpaces("drive").execute());
}

从我的 BackupActivity 然后我从 backup 方法调用 queryFiles:

  public void backup(View v) {
driveServiceHelper.queryFiles()
.addOnSuccessListener(fileList -> {
// another code
})
.addOnFailureListener(e -> showMsgSnack(getString(R.string.uploaderror)));

我没有找到任何解决方案来处理这个问题以避免完全返工该类。

我尝试了什么:

我尝试用可运行的,也可调用的替换,但它不起作用,因为预期返回的是任务,而不是文件列表。

我还尝试使用 TaskCompletionSource:

public Task<FileList> queryFiles(int delay) throws IOException, ExecutionException, InterruptedException {

new Thread(
new Runnable() {

@Override
public void run() {
TaskCompletionSource<FileList> taskCompletionSource = new TaskCompletionSource<>();

FileList result = null;
try {
result = mDriveService.files().list().setSpaces("drive").execute();
} catch (IOException e) {
e.printStackTrace();
}
FileList finalResult = result;
new Handler().postDelayed(() -> taskCompletionSource.setResult(finalResult), delay);

return taskCompletionSource.getTask();
}
}).start();

}

但返回不是来自 void 类型的方法。

最佳答案

好的,经过数小时的测试后,我尝试了这个解决方案,目前看来这很有效:(使用 executorService,并且在 Handler 中需要一个 Looper。)

public Task<FileList> queryFiles() {
final TaskCompletionSource<FileList> tcs = new TaskCompletionSource<FileList>();
ExecutorService service = Executors.newFixedThreadPool(1);

service.execute(
new Runnable() {
@Override
public void run() {

FileList result = null;
try {
result = mDriveService.files().list().setSpaces("drive").execute();
} catch (IOException e) {
e.printStackTrace();
}
FileList finalResult = result;
new Handler(Looper.getMainLooper()).postDelayed(() -> tcs.setResult(finalResult), 1000);

}
});

return tcs.getTask();

}

关于Android 已弃用 Tasks.call - 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69933562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com