我正在尝试设置一个非常长的字符串。 并且它阻止了UI线程2-3秒。
在异步任务中只有doInBackground()
在后台,其他函数使用ui线程,我不能在后台线程或setText()
中使用doInBackground()
?是否有更快的textview替代方案?
答案 0 :(得分:1)
在onPostExecute()中,您可以更新文本视图。
// This method runs on UI thread.
protected void onPostExecute(String result) {
addResultToTextView(result);
}
有关详细信息,请参阅https://developer.android.com/reference/android/os/AsyncTask.html。
答案 1 :(得分:1)
您需要将工作结果设置为异步任务的onPostExecute()
public class MyAsyncTask extends AsyncTask<Url, Integer, String> {
protected String doInBackground(URL... urls) {
// for example, download something
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return String.valueOf(totalSize);
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(String result) {
textView.setText(result);
}
}
此外,您可以在AsyncTask usage
中找到此示例