Избегайте повторной загрузки данных при завершении деятельности
В своей основной активности приложения я загружаю некоторые пользовательские данные на onStart()
, Когда я открываю настройки и нажимаю Back
кнопку, я заканчиваю Settings Activity
и я возвращаюсь к основной деятельности. Проблема в том, что данные загружаются повторно.
Итак, как можно избежать повторной загрузки данных?
Я хоть о startActivityForResult
но я не знаю, как его использовать, и я не понимаю, как это работает.
Заранее спасибо!
4 ответа
Определите статическую переменную в вашем основном классе деятельности следующим образом:
public static bool download = true;
Когда вы возвращаетесь из настроек, измените его значение на false, например:
MainActivity.download = false;
И поместите ваш метод загрузки в оператор if следующим образом:
if (download) {
yourdownloadcode();
}
Это обычное поведение Android. Когда вы запускаете "Активность настроек", ваша "Основная активность: вызывает onStop, и активность останавливается. Теперь, когда вы нажимаете кнопку" Назад "в" Активности настроек "," Основная активность "выходит на первый план, и метод onStart вызывается снова. Поскольку вы говорите, что загружаете данные в методе onStart, данные снова будут загружены.
Вы можете избежать этого, загрузив данные в методе onCreate.
Когда ваша основная деятельность становится видимой после нажатия Back
кнопка в настройках активности, onStart
метод вызывается еще раз (см. Activity Lifecycle). Вот почему вы начинаете повторную загрузку данных еще раз. Итак, оставьте флажок, который указывает, что вы уже начали загрузку. Но имейте в виду, что ваша основная деятельность может быть убита в любое время после onPause
метод вызывается.
Если вы хотите загрузить данные только те, вы можете использовать активность onCreate
, Вот информация о жизненном цикле активности: http://developer.android.com/reference/android/app/Activity.html
startActivityForResult
вы можете использовать как обратный вызов для экрана настроек - если вам нужно изменить макет главной активности после изменения конфигурации на экране настроек. Вы можете найти пример здесь http://saigeethamn.blogspot.com/2009/08/android-developer-tutorial-for_31.html