可以取消Google云端硬盘上传?

cra*_*ool 10 java android google-api-java-client android-asynctask google-drive-api

我已经使用官方API编写了一个应用程序来上传到Google驱动器,这非常有效.但是我无论如何都无法取消上传.我在ASyncTask中运行它,到目前为止,我已尝试制作驱动器对象,文件路径,令牌和其他一些变量.我也尝试使令牌无效,但似乎这只是从缓存中删除它并没有实际上使服务器端无效.我已经在ASyncTask上调用了cancel,但是如果在上传开始时它被取消,那么似乎无法阻止它.

我的问题是,如果用户开始上传100mb文件,他们无法取消它,除了打开和关闭互联网连接这是不切实际的.这是我的上传代码:

  java.io.File jFile = new java.io.File(path); //Does not get file just info
                File body = setBody(jFile, mimeType);
                try
                {
                  java.io.File mediaFile = new java.io.File(path);
                  InputStreamContent mediaContent =
                      new InputStreamContent(mimeType,
                          new BufferedInputStream(new FileInputStream(mediaFile)));
                  mediaContent.setLength(mediaFile.length());
                  request = drive.files().insert(body, mediaContent);
                  request.getMediaHttpUploader().setProgressListener(new CustomProgressListener());
                  File file = request.execute();
Run Code Online (Sandbox Code Playgroud)

肯定有办法取消上传?

Yan*_*bar 7

好问题!我提交了一项功能请求,可以取消媒体上传请求:

https://code.google.com/p/google-api-java-client/issues/detail?id=671

然而,基于该库的当前设计,这可能是难以实现的.

另一个需要考虑的选择是不使用AsyncTask而是自己实现多线程并中止正在运行的Thread.不愉快,但可能是你现在这样做的唯一选择.

  • 我试过调用线程.中断()方法,但无论如何上传继续.你自己实现多线程是什么意思? (2认同)