gpt4 book ai didi

android - 取消 Dropbox getFile 下载

转载 作者:行者123 更新时间:2023-11-29 02:00:51 24 4
gpt4 key购买 nike

使用 Android Dropbox SDK 时,有人知道在 getFile 调用开始后取消下载的最佳方法吗?目前,我的 AsyncTask 类执行以下操作:

@Override
protected O2ShellFileManagerError doInBackground(File... params) {
if (params[0] == null) {
return new O2ShellFileManagerError(
"No File found.",
O2ShellErrorCode._o2sfm_ec_unknown);
}

File mFile = params[0];

try {
DropboxAPI<AndroidAuthSession> mDBApi = O2DropboxStorage
.getDropboxSession(mContext);

// mOutputStream is class level field.
mOutputStream = new FileOutputStream(mFile);
DropboxFileInfo info = mDBApi.getFile(mDropboxPath, null,
mOutputStream, new ProgressListener() {

@Override
public void onProgress(long bytes, long total) {
if (!isCancelled())
publishProgress(bytes, total);
else {
if (mOutputStream != null) {
try {
mOutputStream.close();
} catch (IOException e) {
}
}
}
}
});
} catch (DropboxException e) {
Log.e("DbExampleLog",
"Something went wrong while getting file.");

} catch (FileNotFoundException e) {
Log.e("DbExampleLog", "File not found.");

} finally {
if (mOutputStream != null) {
try {
mOutputStream.close();
mOutputStream = null;
} catch (IOException e) {
}
}
}
/*
* The task succeeded
*/
return null;
}

因此,我上面的解决方法实质上是在生成 DropboxException 的 OnProgess 方法中关闭 mOutputStream。有比这更好/更清洁的方法吗?

最佳答案

使用 getFileStream API 获取 DropboxInputStream。

public DropboxAPI.DropboxInputStream getFileStream(java.lang.String path, java.lang.String rev)

当用户取消下载时,调用DropboxInputStream的close函数。

我认为这种方法可以完全释放资源。

关于android - 取消 Dropbox getFile 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12729532/

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