Приложение переходит в режим ANR - PullRequest
0 голосов
/ 30 марта 2011

Когда пользователи нажимают кнопку возврата в моем приложении. Вот сценарий:

  1. Пользователь запускает приложение - Активность показывает вверх
  2. Пользователь нажимает кнопку возврата
  3. Пользователь перезапускает приложение. В этот момент приложение просто показывает пустой экран, ни одна из кнопок (домой / назад) не отвечает, после Через некоторое время появляется диалог принудительного закрытия.
    ПРИМЕЧАНИЕ. Если пользователь нажимает «Домой», а затем перезапускает приложение, этого не происходит, только если пользователь нажимает «Назад», а затем перезапускает его.

В моем 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();
}

Не уверен, что происходит, и не знаю, как это отладить.

Интересно - "Zeroconf Browser" популярное приложение, которое я скачал с Android Market, чтобы использовать для отладки шахты - похоже, имеет ту же проблему.

РЕДАКТИРОВАТЬ: Изменен код с onStart () / onStop () на onCreate () / onDestroy (). Та же проблема, что и раньше.

РЕДАКТИРОВАТЬ: Для тех, кто сталкивается с аналогичной проблемой, это то, что вызывало мои страдания. Код Android не был виновником: http://sourceforge.net/tracker/index.php?func=detail&aid=2933183&group_id=93852&atid=605791

1 Ответ

2 голосов
/ 30 марта 2011

Возможно, вы делаете сетевые запросы в потоке пользовательского интерфейса. Вы можете проверить Painless Threading и AsyncTask для обработки этого.

Обратите внимание, что было бы неплохо выполнить настройку и демонтировать в onCreate и onDestroy. onStart можно вызывать несколько раз в течение жизненного цикла действия ; Ваш код защищает от этого случая?

...