Я разрабатываю функцию ListActivity, в которой в каждом элементе списка отображается информация.
После сбора данных для отображения в каждой записи списка (миниатюра с SD-карты и подсчет изБД) занимает много времени, я думал об использовании AsyncTasks, чтобы освободить основной поток от нагрузки и позволить пользователю действительно быстро прокручивать список без задержки.
Я думал об использовании тегапросмотры в моей записи, чтобы отменить AsyncTasks записей, которые повторно используются после прокрутки за пределы экрана.
что-то вроде:
public void bindView(View view, Context context, Cursor cursor) {
[...]
MyAsyncTask t (MyAsyncTask) myImageView.getTag();
if (t != null) {
t.cancel(true);
t = null;
}
t = new MyAsyncTask();
myImageView.setTag(t);
t.execute();
[...]
}
Эта часть должна работать, но моя проблема в том, когда заканчивается действие или пользовательменяет ориентацию.Я бы предпочел избегать хранения массива или хэш-карты моих AsyncTasks, чтобы иметь возможность отменить их все в onPause или onStop.
Из чтения, которое я сделал в Интернете, AsyncTasks продолжит работать в фоновом режиме после изменения ориентацииили задание заканчивается, и даже в худшем случае оно будет поддерживать активность в действии, предотвращая сбор мусора (что, безусловно, не то, что я хочу).
Любые идеи или предложения о том, как я могу это сделать?
Должен лиЯ использую что-то кроме AsyncTasks?