Жизнен цикъл на активност на Android за ListView, използващ кеш?

Приложих listView, който показва елементи, изтеглени на моя уеб сървър. ListView използва 'cache'(holder), кликвам върху един елемент от моя listView и се извиква намерение (нова дейност). Работи перфектно, но когато се върна към моя listView от тази дейност, onStart() се извиква и изтеглянето се извиква отново (докато не ми трябва, защото използвам „кеш“).

Как мога да поправя този проблем? Трябва да извикам уеб сървъра във функция, която той не извиква, когато се върна в тази дейност.

Благодаря

Флоран


person user420574    schedule 14.03.2011    source източник


Отговори (1)


Ако се опитвате да кеширате изображения между дейности, има два подхода:

  1. Записване на файлове на SD картата – Това може да е удобно, ако искате изображенията да останат там дори след като дейността ви приключи и се рестартира. Недостатъкът е, че сега трябва да управлявате жизнения цикъл на изображенията и да се уверите, че периодично ги изтривате, така че вашата кеш директория да не продължава да расте.

  2. Използване на услуга - Не съм сигурен каква ще бъде ефективността с този метод и обикновено е малко по-сложен. Една услуга ще продължи да съществува, докато вашите дейности идват и си отиват, съхранявайки вашите изображения в паметта си. Прочетете този отговор за повече относно комуникацията с услуги.

  3. Съхранявайте изображения в статичен сингълтън – Бързият и мръсен начин; Просто се уверете, че не съхранявате твърде много в паметта или ще получите изключение за липса на памет.

Вероятно бих предпочел метод 1.

Вижте също този изчерпателен отговор.

person Matthew Willis    schedule 14.03.2011