Я новичок в Android и пытаюсь выяснить, где разместить HTTP-запрос, чтобы он выполнялся только один раз (когда активность стала видимой). onCreate всегда вызывается при возврате из onActivityResult (захват картинки с камеры здесь)
Какие-либо предложения?
Внутри onCreate(Bundle savedInstanceState)
если savedInstanceState
имеет значение null
это первый/чистый запуск активности. Таким образом, вы можете сделать что-то вроде этого:
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
// call HTTP request
}
... the rest of onCreate()
}
Как насчет установки флага при первом вызове внутри onCreate, а затем проверки его каждый раз при вызове CreateCreate (и вашего кода). Для полноты жизненного цикла Activity документируется здесь: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
OnCreate() не может быть плохим местом, если вы либо одобрены, когда выполняете его всегда, когда действие запущено, либо вы готовы проверить, было ли это уже сделано (как говорят другие ответы). Вы можете установить флаг в SharedPreferences для этой цели, так как этот флаг также сохранится при завершении работы приложения и перезапуске.
Сказав это: вам все равно нужно поместить запрос http в фоновый поток, если вы когда-либо захотите сделать ваше приложение доступным для сотовых или даже мороженого сэндвич, так как эти системы убивают приложение, если есть какой-либо доступ к сети в потоке пользовательского интерфейса.