簡體   English   中英

在Android上使用ASyncTask通過Google Drive API讀取文件

[英]Using ASyncTask for Reading from a File with Google Drive API on Android

我在Android設備上使用Google Drive API。

我需要將Google雲端硬盤上文件的內容獲取為字符串。 簡單的東西

String dbData = driveObject.downloadFileToString("db_export.txt");

我正在實現“ GoogleDrive”對象。 我需要做到這一點,而又不要弄亂所有的任務,線程和回調。 但是,我做不到。

這是一個示例:我實現了一個名為“ findFileByPath”的方法,該方法返回路徑名作為參數給出的文件的文件ID。 但是,Android眾神已經強迫對此進行任何調用-因為它處理網絡活動-發生在線程或AsyncTask中。 問題在於,等待任務完成的任何暫停都會導致Google Drive API線程暫停。 所以....如果我這樣做:

FindFileWithAsyncTask ffwat = new FindFileWithAsyncTask();
ffwat.execute(filePath);
File f = ffwat.get(5, TimeUnits.SECONDS);

在名為“ FindFileWithAsyncTask”的AsyncTask中完成對“ findFileByPath”的調用,它只是掛起了所有內容。 僅當“獲取”超時時,Google Drive API才會繼續運行。

救命! 必須一種方法可以避免或掩蓋所有異步BS。

有什么線索嗎? 謝謝!

使用網絡服務時,很難擺脫AsyncTasks,因為否則您的UI將凍結以等待結果。

嘗試這樣做:

new AsyncTask<String, Void, String>() {
        @Override
        protected String doInBackground(String... params) {
            String dbData = driveObject.downloadFileToString("db_export.txt");
            return dbData;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            File f = new File(s);
        }
    }.execute();

然后,您將等待onPostExecute方法上的結果。 動態創建AsyncTask會減少無聊的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM