2017-04-08 8 views
10

Google Translate APIを初期化するには、スレッドで行う必要があります。ほとんどの場合、2秒しかかかりません。しかし、5回に1回、20秒から3分(許容できない)が必要です。私はGoogleが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トラックの長さに応じて、その1行のコードがどれくらい長く続くかがわかります。 @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

関連する問題