2017-03-17 113 views
1

我可以將多個文件上傳到雲端硬盤,但我不知道任務何時完成。 結果回調讓我很滿意,但如果我關閉了互聯網連接,那麼任務會中斷。這是我使用的代碼:Android - Google Drive Api:如何知道上傳任務何時完成?

void createFile(DriveFolder pFldr, final String titl, final String mime, final File file) { 
    DriveId dId = null; 
    setProgressing(true); 
    if (mGoogleApiClient != null && mGoogleApiClient.isConnected() && titl != null && mime != null && file != null) try { 

     final DriveFolder parent = pFldr != null ? pFldr : Drive.DriveApi.getRootFolder(mGoogleApiClient); 

     Drive.DriveApi.newDriveContents(getGoogleApiClient()).setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() { 
      @Override public void onResult(DriveApi.DriveContentsResult driveContentsResult) { 
       DriveContents cont = driveContentsResult != null && driveContentsResult.getStatus().isSuccess() ? 
         driveContentsResult.getDriveContents() : null; 
       if (cont != null) try { 
        OutputStream oos = cont.getOutputStream(); 
        if (oos != null) try { 
         InputStream is = new FileInputStream(file); 
         byte[] buf = new byte[4096]; 
         int c; 
         while ((c = is.read(buf, 0, buf.length)) > 0) { 
          oos.write(buf, 0, c); 
          oos.flush(); 
         } 
        } 
        finally { oos.close();} 

        MetadataChangeSet meta = new MetadataChangeSet.Builder().setTitle(titl).setMimeType(mime).build(); 

        parent.createFile(mGoogleApiClient, meta, cont).setResultCallback(new ResultCallback<DriveFolder.DriveFileResult>() { 
         @Override public void onResult(DriveFolder.DriveFileResult driveFileResult) { 
          DriveFile dFil = driveFileResult != null && driveFileResult.getStatus().isSuccess() ? 
            driveFileResult.getDriveFile() : null; 
          if (dFil != null) { 
           Log.d(TAG,"photo "+count+" uploaded"); 
           count --; 
           if(count == 0){ 
            // is the task completed? 
           } 

          } else { 
           Log.d(TAG,"error during upload photo " + count); 
          } 
         } 
        }); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        ShowErrorHelper.showErrorDialog(UploadActivity.this, e); 
       } 
      } 
     }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     ShowErrorHelper.showErrorDialog(UploadActivity.this, e); 
    } 
} 

我想知道當它是確保所有文件都已經上傳到雲(這樣我就可以在本地刪除)。

回答

0

您正在使用Google Drive Android API。您使用GDAA創建的任何驅動器文件均在設備上創建。只要他們被創建,你可以刪除你的原始文件。一段時間後,GDAA會將雲端硬盤文件同步到雲端。這最後一個方面對你來說是不可見的,可以忽略。

+0

好的,我可以刪除這些文件,謝謝!但是,沒有辦法確定文件是否已經在雲端?例如,我想保持互聯網連接打開,直到任務完成。 問題是,如果用戶關閉連接並在第二天重新打開,我必須等待一天才能查看雲中的文件,並且我需要幾乎實時訪問它們。 – user2044083

+0

如果您想要達到該級別的實時和確定性行爲,請停止使用GDAA並切換到REST API。 – pinoyyid

相關問題