我必須填寫ListView
,並附上需要時間收集的文字信息。 我的方法是使用AsyncTask完成後臺任務,但是當結果到達時將文本設置爲TextView會減慢列表的速度:每次調用getView()
時,列表都會滯後。如何異步設置TextView的文本?
這是我的AsyncTask
類
private class BreadcrumbTask extends AsyncTask<FFile, Void, String>{
private WeakReference<TextView> mTextView;
public BreadcrumbTask(TextView textView){
mTextView = new WeakReference<TextView>(textView);
}
@Override
protected String doInBackground(FFile... params) {
// text processing
}
@Override
protected void onPostExecute(String result) {
if (mTextView != null){
TextView tv = mTextView.get();
if (tv != null)
//this line blocks the UI. if I comment it the lag is gone
tv.setText(result);
}
// mTextView.setText(結果); }
我在getView()中創建了一個新任務,並執行它。 這個問題顯然來自tv.setText(result)
在onPostExecute()
。當我很好地評論清單流。那麼我如何更新TextView
而不會減慢用戶界面呢?
檢查到如何/你在哪裏做的AsyncTask .execute(),如果在你的ListView適配器getView,這可能會在每個視圖中被調用多次。也許你的getView和AsyncTask中的一些日誌代碼會有所幫助。 tv.setText()本身肯定會讓你感到厭倦。 – CSmith 2012-07-12 18:04:52
@NathanZ你有沒有得到這個決議? – bugfixr 2014-11-28 19:08:22