0

Android 기기에서 Google 드라이브 API를 사용하고 있습니다.Android에서 Google 드라이브 API를 사용하여 파일 읽기에서 ASyncTask 사용

Google 드라이브에있는 파일의 내용을 문자열로 가져와야합니다. 간단한 것

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

"Google 드라이브"개체를 구현하고 있습니다. 나는 작업과 스레드와 콜백의 모든 혼란없이 이것을 할 필요가있다. 그러나 나는 그것을 할 수 없다.

다음은 예입니다. "findFileByPath"라는 메서드를 구현하여 경로명이 매개 변수로 지정된 파일의 파일 ID를 반환합니다. 그러나 안드로이드 신은 네트워크 활동을 다루기 때문에 스레드 또는 AsyncTask에서 이러한 호출을하도록 강요했습니다. 문제는 작업이 완료 될 때까지 대기하는 일시 중지로 인해 Google 드라이브 API 스레드가 일시 중지된다는 것입니다. 그래서 .... 내가 할 경우이 : 호출에 "findFileByPath"가 "FindFileWithAsyncTask"라는 AsyncTask를 이루어집니다

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

는 그냥 모든 것을 건다. Google 드라이브 API는 '가져 오기'가 시간 초과 될 때만 진행됩니다.

HELP! 에는이있어 모든 비동기 BS를 피하거나 마스크 할 수 있습니다.

실마리가 있습니까? 감사!

+0

내 대답이 문제를 해결 했습니까? – Laerte

답변

0

네트워크 서비스를 사용할 때 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를 즉시 작성하면 지루한 코드가 줄어 듭니다.