I have an asyncTask Class which is called whenever the user taps a "Send" button from an AppCompatActivity
. In the doInBackground
method of my AsyncTask, I translate a string into 30 languages using Google Translate API. The problem is, it takes some time for each string to be translated into each language. I feel like it would be a better approach to run all of these functions at the same time by multithreading.
Each time a try
and catch
is its own set of instructions to translate a string into 1 language. This approach is too slow.
Here is my doInBackground Function:
@Override
protected Void doInBackground(Void... voids) {
translate = TranslateOptions.newBuilder().setApiKey("GOOGLE_API_KEY").build().getService();
/*ENGLISH TO ARABIC*/
try {
Translation translation =
translate.translate(
MY_STRING,
Translate.TranslateOption.sourceLanguage("en"),
Translate.TranslateOption.targetLanguage("ar"));
parseObject.put("data0", translation.getTranslatedText());
} catch (Exception e) {
parseObject.put("data0", MY_STRING + " " + mContext.getString(R.string.translationfailed));
}
/*English to Chinese*/
try {
Translation
translation =
translate.translate(
MY_STRING,
Translate.TranslateOption.sourceLanguage("en"),
Translate.TranslateOption.targetLanguage("zh-CN"));
parseObject.put("data1", translation.getTranslatedText());
} catch (Exception e) {
parseObject.put("data1", MY_STRING + " " + mContext.getString(R.string.translationfailed));
}
/*28 More languages run...*/
/*Then, Save Data into server*/
parseObject.saveinBackground();
return null;
}