【发布时间】:2017-03-01 04:07:42
【问题描述】:
我有一个 asyncTask 类,只要用户从AppCompatActivity 中点击“发送”按钮,就会调用它。在我的 AsyncTask 的 doInBackground 方法中,我使用 Google Translate API 将字符串翻译成 30 种语言。问题是,将每个字符串翻译成每种语言需要一些时间。我觉得通过多线程同时运行所有这些功能会是一种更好的方法。
每次try 和catch 都是它自己的一组指令,用于将字符串翻译成一种语言。这种方法太慢了。
这是我的 doInBackground 函数:
@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;
}
【问题讨论】:
标签: java android multithreading android-asynctask google-translate