Приложение переходит в режим ANR
Вопрос
Когда пользователи нажимают кнопку «Назад» в моем приложении.Вот сценарий:
- Пользователь начинает приложение - Activity отображается
- Пользователь нажимает кнопку «Назад»
- Пользователь перезапускает приложение. На этом этапе приложение только показывает пустой экран, ни одна из кнопок (дома/назад) ответа, после некоторого времени диалоговое окно «Силовое покрытие».
ПРИМЕЧАНИЕ:Если пользователь нажимает «Домой», а затем перезапускает приложение, этого не происходит, только если пользователь нажимает «Назад», а затем перезапускает его.
В моем onCreate() у меня есть код настройки сети.Однако у onDestroy() есть соответствующий код очистки, поэтому я не понимаю, почему это происходит.
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(DEBUG_TAG, "onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Aquire the multicast lock
// Create an instance of JmDNS
// Add a listener for Bonjour services of a given type
}
@Override
protected void onDestroy() {
Log.d(DEBUG_TAG, "onDestroy()");
// Remove the services listener
// Set the reference to JmDNS instance null
// Release the multicast lock
super.onDestroy();
}
Не уверен, что происходит, и не знаю, как это отладить.
Интересно - «Браузер Зероконф» популярное приложение, которое я скачал с Android Market, чтобы использовать для отладки своего, похоже, имеет ту же проблему.
РЕДАКТИРОВАТЬ:Изменен код с onStart()/onStop() на onCreate()/onDestroy().Та же проблема, что и раньше.
РЕДАКТИРОВАТЬ:Для всех, кто столкнулся с подобной проблемой, это то, что стало причиной моих страданий.Код Android не был виновником:http://sourceforge.net/tracker/index.php?func=detail&aid=2933183&group_id=93852&atid=605791
Решение
Возможно, вы делаете сетевые запросы в потоке пользовательского интерфейса.Вы можете оформить заказ Безболезненное врезание нитей и Асинктаск для того, чтобы справиться с этим.
Обратите внимание, что может быть хорошей идеей выполнить настройку и демонтаж в onCreate
и onDestroy
. onStart
можно вызывать несколько раз во время действия жизненный цикл;ваш код защищает от этого случая?