Java 如何更快地上传到GoogleDrive?
我有下面的代码,应该是从我的android设备上传图像到我的谷歌硬盘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 { /
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%)