1
我遇到了導致我的應用崩潰的ListView問題。整個應用程序不會崩潰,它只是關閉視圖並重新加載主要活動。它表面上看起來很好,當滾動速度非常快時,它大部分是穩定的。但是,如果我使用快速滾動進行多次上下滾動,則屏幕將凍結並重新加載主要活動。有人可以幫我找出問題所在嗎?這是我從logcat的接收時崩潰的錯誤:滾動速度非常快時ListView崩潰致命錯誤
Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 12439 (AsyncTask #4)
下面就來看看我的代碼:
的getView()方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = new ViewHolder();
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.custom_layout, null);
vi.setMinimumHeight(120);
holder = new ViewHolder();
holder.text = (TextView) vi.findViewById(R.id.text);
holder.icon= (ImageView) vi.findViewById(R.id.icon);
vi.setTag(holder);
}
holder = (ViewHolder) vi.getTag();
holder.position = kanji_ids.get(position);
holder.context = vi.getContext();
new DownloadAsyncTask().execute(holder);
return vi;
}
這裏是提取的的的AsyncTask數據並顯示它...
class DownloadAsyncTask extends AsyncTask<ViewHolder, Void, ViewHolder> {
String icon;
String text;
@Override
protected ViewHolder doInBackground(ViewHolder... params) {
ViewHolder viewHolder = params[0];
Context context = viewHolder.context;
Database db = Database.getInstance(context);
text = db.getPercentByPosition(viewHolder.position);
icon = db.getIconByPosition(viewHolder.position);
return viewHolder;
}
@Override
protected void onPostExecute(ViewHolder result) {
if (result.icon == null) {
result.icon.setImageResource(R.drawable.loading);
} else {
result.icon.setImageResource(icon);
}
result.text.setText(text);
}
}
感謝您的回覆!我對如何實現這一點感到困惑。我是否讓持有人的圖片視圖和文字視圖的參考資料較弱?我是否會讓觀點本身成爲一個弱引用? – dharris001