Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更快地上传到GoogleDrive?_Java_Android_Callback - Fatal编程技术网

Java 如何更快地上传到GoogleDrive?

Java 如何更快地上传到GoogleDrive?,java,android,callback,Java,Android,Callback,我有下面的代码,应该是从我的android设备上传图像到我的谷歌硬盘 private void saveFileToDrive() { progressDialog = ProgressDialog.show(this, "", "Loading..."); Thread t = new Thread(new Runnable() { @Override public void run() { try { /

我有下面的代码,应该是从我的android设备上传图像到我的谷歌硬盘

  private void saveFileToDrive() {

      progressDialog = ProgressDialog.show(this, "", "Loading...");

    Thread t = new Thread(new Runnable() {
      @Override
      public void run() {
        try {
          // File's binary content
          java.io.File fileContent = new java.io.File(fileUri.getPath());
          FileContent mediaContent = new FileContent("image/jpeg", fileContent);

          // File's metadata.
          File body = new File();
          body.setTitle(fileContent.getName());
          body.setMimeType("image/jpeg");

          File file = service.files().insert(body, mediaContent).execute();
          if (file != null) {
            showToast("Photo uploaded: " + file.getTitle());

            progressDialog.dismiss();
            //startCameraIntent();
          }
        } catch (UserRecoverableAuthIOException e) {
          startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    });
    t.start();
  }
问题是上传时间太长了。这很奇怪,因为图像不太大

我想如果我能通过原始的驱动程序上传,速度会更快

1) 有没有办法让上传速度更快,同时又不会对图像质量造成太大损害

2) 我想使用回调,但是对于新线程和回调,什么是最佳实践呢


3) 如何显示上载当前数字上载进度(到目前为止已完成X%)


是否有现成的签名\模式可供使用?

您是否在主线程上执行此工作?我建议使用带有的,以便在UI等待响应时在后台完成工作。使用Runnable进行上传不是一个好主意。安卓系统内置的任何后台线程都应该有性能提升。特别是因为用户将看到一个不确定的进度对话框,这比一个没有明显原因而被暂停的应用程序更令人愉快

或者,如果您使用AmazonS3服务器来存储上传的内容,您可能需要使用第三方库,如

如果AsyncTask或Simple3R不是你喜欢的。对于后台上传来说,一个很好的选择,因为上传过程与您的活动完全解耦。完成上载后,您可以在用户返回该活动时更新本地存储数据

1) 您没有理由需要更改图像的任何内容来上传它。特别是如果它是小的

2) 我建议不要回电。使用本地存储,例如数据库,一旦上传完成,您就可以在本地更新信息。返回开始上载的活动/片段时,您可以使用AsyncTask/AsyncTaskLoader/CursorLoader等加载此本地数据。在应用程序中存在许多更改实时数据的选项


3) 存在许多模式,我在这里列出了一些我最喜欢的模式。

你的帖子URL是什么?你的意思是什么变量?但我已经在使用
ProgressDialog
。为什么
AsyncTask
new thread
更可取?我如何显示上传当前数字上传进度(到目前为止已完成X%)