2017-04-08 7 views
10

Google 번역 API를 초기화하려면 스레드에서 완료해야합니다. 대부분 2 초 정도 밖에 걸리지 않습니다. 그러나 매 5 번 중 1 번은 20 초에서 3 분까지 걸립니다 (용납되지 않음). 나는 구글이 APIGoogle Translate API가 초기화하는 데 매우 오랜 시간이 걸릴 때

 AsyncTask<Void, Void, Void> asyncTask = new AsyncTask<Void, Void, Void>() { 

     @Override 
     public void onPostExecute (Void aVoid) { 

      Log.i("APP", "finished initializing"); 

     } 

     @Override 
     protected Void doInBackground(Void... voids) { 
      Log.i("APP", "started initializing"); 
      translate2 = TranslateOptions.newBuilder().setApiKey(MY_API_KEY).build().getService(); 

      return null; 
     } 

    }; 
    asyncTask.execute(); 

에게 Gradle을

번역 초기화

AppCompatActivity 나는 또한 내 Gradle을 (모듈)의 최신 버전 :

compile ('com.google.apis:google-api-services-translate:v2-rev49-1.22.0') 

예전에는 잘 작동했지만이 오류는 매우 최근입니다. 왜 이런 일이 벌어지는 지 모르겠습니다.

+0

에 asynctasks를 실행? 전체 요청 처리기가 실행되는 데 오래 걸리는 것입니까? – Nick

+0

예, 전체 AsynctTask 실행은 DoInBackground 내부의 Translate 초기화, DoInBackground의 Logs 및 Post Execute 추적을 사용하여 한 줄의 코드가 얼마나 오래 걸리는지 오래 걸립니다. @Nick – grant

+0

이벤트의 시간 프로필이 주어지면 클라이언트와 서버 간의 연결이 저하 될 수 있습니다. 아직도 발생하고 있습니까? 그리고 그것은 일관되게, 또는 대부분의 시간/일부 시간에 발생합니까? 그리고 클라이언트는 어떻게 네트워크에 연결합니까? 여러 클라이언트에 나타 났습니까? – Nick

답변

1

asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 

asyncTask.execute() 다른 비동기 작업이 해당 작업은 아직 그것을 & 전에 실행 된 경우 방법은 시리얼 모드에서 실행 실행에

asyncTask.execute(); 

교체 시도 실행 중이면 다른 비동기 작업이 완료 될 때까지 대기합니다.

로, executeOnExecutor는 코드의 특정 블록이 얼마나 많은 시간을 실행하기 위해 취할 프로파일 얼마나 병렬

+0

이미 이것을 시도했지만 문제가 아직 남아 있습니다. Google의 서버 측 오류 일 수 있습니다. – grant

+1

@grant 일하기 위해 Google에 연결해야하는 Google Nearby API를 사용하기 때문에 실제로 Google 서버 측의 잘못입니다. 며칠 전에 시도한 시간 중 약 95 %가 Google Play 서비스를 중단 시켰습니다. 내 코드. 오늘 제 코드는 API의 충돌을 10 % 만 발생시킵니다. 그리고 내 코드가 바뀌지 않았습니다. – trinity420