Избегайте повторной загрузки данных при завершении действия

В моем основном действии приложения я загружаю некоторые пользовательские данные в папку onStart(). Когда я открываю настройки и нажимаю кнопку Back, я заканчиваю Settings Activity и возвращаюсь к основному действию. Проблема в том, что данные перезагружаются.

Итак, как избежать повторной загрузки данных?

Я хоть и про startActivityForResult но не умею им пользоваться и не понимаю как он работает.

Заранее спасибо!


person anonymous    schedule 07.08.2012    source источник
comment
опубликуйте код кнопки back   -  person MAC    schedule 07.08.2012


Ответы (4)


Определите статическую переменную в вашем основном классе активности следующим образом:

public static bool download = true;

Когда вы возвращаетесь из настроек, измените его значение на false, например:

MainActivity.download = false;

И поместите свой метод загрузки в оператор if следующим образом:

if (download) {
yourdownloadcode();
}
person Serdar Samancıoğlu    schedule 07.08.2012
comment
Мне нужен код в onStart(), поэтому я воспользуюсь вашей идеей. Благодарю вас! - person anonymous; 07.08.2012

Это обычное поведение Android. Когда вы запускаете «Действие настроек», ваше «Основное действие: вызывает onStop, и действие останавливается. Теперь, когда вы нажимаете кнопку «Назад» в «Действии настроек», «Основное действие» выходит на первый план, и снова вызывается метод onStart. , Поскольку вы говорите, что загружаете данные в методе onStart, данные снова будут загружены.

Вы можете избежать этого, загрузив данные в методе onCreate.

person Umesh    schedule 07.08.2012
comment
Спасибо, но мне нужна загрузка в формате onStart(). - person anonymous; 07.08.2012

Когда ваше основное действие становится видимым после нажатия кнопки Back в действии «Настройки», метод onStart вызывается еще раз (см. Жизненный цикл активности). Вот почему вы снова начинаете повторно загружать данные. Итак, оставьте какой-нибудь флаг, который указывает, что вы уже начали задачу загрузки. Но имейте в виду, что ваша основная активность может быть уничтожена в любое время после вызова ее метода onPause.

person StenaviN    schedule 07.08.2012

Если вы хотите загружать только данные, вы можете использовать Activity onCreate. Вот информация о цикле активности: http://developer.android.com/reference/android/app/Activity.html

startActivityForResult 

вы можете использовать как обратный вызов для экрана настроек — если вам нужно изменить макет основного действия после изменения конфигурации на экране настроек. Пример можно найти здесь http://saigeethamn.blogspot.com/2009/08/android-developer-tutorial-for_31.html

person Saasha    schedule 07.08.2012
comment
Спасибо, но мне нужна загрузка в формате onStart(). - person anonymous; 07.08.2012