从Android上传到Amazon S3的文件缓慢

前端之家收集整理的这篇文章主要介绍了从Android上传到Amazon S3的文件缓慢前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经按照亚马逊指南,将文件上传到Amazon S3,我注意到这太慢了.上传一个简单的png文件约20kb需要大约10秒.

最初我以为这个问题与线程有关,我已经实现了一个AsyncTask来上传图像,但问题依然存在.以下是用于上传图像的代码.

  1. private class UploadFileTask extends AsyncTask<String,Integer,String> {
  2. String remotePath;
  3. String remoteFileName;
  4. File file;
  5. Context context;
  6. S3UploadInterface listener;
  7.  
  8.  
  9. public UploadFileTask(Context context,String remotePath,String remoteFileName,File file,S3UploadInterface listener){
  10. this.context=context;
  11. this.remotePath=remotePath;
  12. this.remoteFileName=remoteFileName;
  13. this.file=file;
  14. this.listener=listener;
  15. }
  16.  
  17. protected String doInBackground(String... params) {
  18. credentialsProvider = new CognitoCachingCredentialsProvider(context,"MY_PRIVATE_CREDENTIAL",Regions.US_EAST_1);
  19. TransferManager transferManager = new TransferManager(credentialsProvider);
  20. Upload upload = transferManager.upload(remotePath,remoteFileName,file);
  21. TransferProgress transferred = upload.getProgress();
  22. while (!upload.isDone()) {
  23. try {
  24. publishProgress((int) transferred.getPercentTransferred());
  25. } catch (Exception e) {
  26. listener.uploadFailed(e);
  27. }
  28. }
  29. return "uploaded";
  30. }
  31.  
  32. protected void onProgressUpdate(Integer... progress) {
  33. if (listener!=null)
  34. listener.currentUploadProgress(progress[0]);
  35. }
  36.  
  37. protected void onPostExecute(String result) {
  38. if (listener!=null)
  39. listener.uploadCompleted();
  40. }
  41. }

有什么想法来解决这个问题吗?
谢谢 :)

解决方法

这将打击您的cpu
  1. while (!upload.isDone()) {
  2. try {
  3. publishProgress((int) transferred.getPercentTransferred());
  4. } catch (Exception e) {
  5. listener.uploadFailed(e);
  6. }
  7. }

尝试添加Thread.sleep以给其他线程运行时间.

猜你在找的Android相关文章