2012-03-14 3 views
0

У меня есть приложение, в котором пользователь может войти. Вход должен быть сохранен. Теперь я тестирую inPause, является ли действие isFinishing(). Если нет, это должно означать, что пользователь покидает приложение (или экран неактивен, или телефонный звонок, или что-то еще). Теперь я хочу зарегистрировать пользователя, если он не вернется в течение 15 минут. Можно ли делать postDelayed (..., 15 * 60)? Будет ли это выполнено в фоновом режиме? Могу ли я сделать сетевой вызов там, чтобы зарегистрировать пользователя и как я уверен, что это действительно делается? В случае, если приложение будет убито в течение этих 15 минут, есть ли крючок, где я регистрирую пользователя?Android Handler Background

+0

Я не знаю, работают ли обработчики/петлители, если actitiy делает паузу. Я бы переместил эту часть веб-соединения на службу, которая не привязана к жизненному циклу активности. – zapl

ответ

1

Возможно, ваше приложение будет убито за эти 15 минут. Скорее всего, это будет зависеть от характеристик устройства, версии Android, количества запущенных приложений, приложений и т. Д. Из-за этих переменных я бы сказал, что полагаться на ваш postDelayed будет недостаточно, и вы должны использовать что-то вроде AlarmManager для регистрации ваше приложение, чтобы он запускал код выхода при запуске.

Если все, что вы хотите, чтобы ваш выход из системы приложений, когда деятельность уничтожается только поместить свой код выхода из системы в методе OnDestroy() вашей деятельности

+0

Будет ли выполняться этот код, даже если приложение будет убито? –

+0

onDestroy()? Да. Это происходит всякий раз, когда ваше приложение уничтожается, независимо от того, выполняется ли оно из вашего кода или из системы, закрывая его. Посмотрите [ЗДЕСЬ] (http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle), чтобы узнать о жизненном цикле активности Android. Это поможет вам справиться с этим и, в целом, очень полезно знать – dymmeh