Активность Android продолжает падать при изменении ориентации - PullRequest
0 голосов
/ 22 мая 2018

В одном из действий моего приложения для Android наблюдается довольно тонкая и не обнаруживаемая ошибка.При определенных условиях, когда я перевожу активность из альбомной в портретную или наоборот, приложение вылетает.Что особенно сложно и раздражает в этой ошибке, так это то, что ни одна из точек останова в действии не попадает в режим отладки, когда я выполняю переход.Кроме того, logcat, похоже, не очень помогает, и там тоже ничего не появляется.

Так что я бы искал несколько предложений о том, что может вызвать сбой при изменении ориентации.Я могу опубликовать некоторый код, но я, очевидно, не могу опубликовать все, и я не уверен, насколько полезной будет публикация нескольких фрагментов из упражнения.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я был на грани отказа, когда что-то обнаружилось в Logcat после одного из неудачных тестов:

java.lang.NullPointerException: Attempt to invoke virtual method 'void
    com.google.android.gms.maps.model.Marker.setIcon
   (com.google.android.gms.maps.model.BitmapDescriptor)' on a null object reference

Я проследил трассировку стека до точки в операции, где исключение нулевого указателяполучилось.На самом деле, как многие из вас предложили в комментариях, было состояние, которое не восстанавливалось должным образом.Точная проблема возникала при инициализации карты Google.

На первый взгляд, этот вопрос, похоже, относится к типу «почему не работает этот код».Однако это не так, потому что отладка и, в большинстве случаев, Logcat не смогли выявить, в чем проблема.

В качестве сообщения о возвращении домой, если вы когда-нибудь столкнетесь с ошибками в коде Android, вам следуетне полагайтесь только на отладку, потому что это может не сработать.Кажется, что Logcat прошел сюда, но даже он не казался воспроизводимым каждый раз.

0 голосов
/ 22 мая 2018

Жизненный цикл Activity таков, что при изменении ориентации такие события, как onCreate() и onStop() (например), не вызываются.Таким образом, если вы создали объекты в onCreate(), они могут не инициализироваться (= null), когда ваш Activity возвращается после поворота.Проверьте свой код на предмет объектов, которые могут быть инициализированы в onCreate().

Также вы можете добавить еще несколько try..catch с Log.e сообщениями.

Если честно, если ваше приложение падает, в logcat должна быть зарегистрирована ошибка.

...