Android Force Close Uncatchable Неотчитываемый - PullRequest
3 голосов
/ 24 февраля 2011

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

Я использую Thread.setDefaultUncaughtExceptionHandler, чтобы перехватывать и сообщать о необработанных исключениях, а затем закрывать изящно.Люди, сообщающие о закрытии службы, ничего не получают от этого, даже если это первое, что устанавливается в конструкторе основной задачи приложения, и все обернуто в try / catches повсюду.Они также сообщают, что во всплывающем окне принудительного закрытия нет опции «Отправить отчет» (предоставляя отчеты об ошибках консоли разработчика), поэтому у меня нет абсолютно никакого способа узнать, в чем проблема.

Использует Android 2.0,с андроидом: minSdkVersion = "5".Требуется только разрешение. ИНТЕРНЕТ.

(на Android-маркете «Fortunes of War FREE», если вы хотите протестировать)

Ответы [ 4 ]

1 голос
/ 24 февраля 2011

Я не уверен, правильно ли я вас понял, но насколько я знаю, Android отображает диалоговое окно отчета, только если вы используете его UncaughtExceptionHandler по умолчанию.

Попробуйте:В конструкторе UncaughtExceptionHander вызовите Thread.getDefaultUncaughtExceptionHandler и сохраните возвращаемый объект в переменной (назовем его defaultHandler).В вашем обработчике uncaughtException() делайте то, что вы хотите сделать, а затем звоните defaultHandler.uncaughtException().

Может быть, вы должны знать:По моему опыту, ваш контекст больше не работает на uncaughtException().Таким образом, вы больше не можете отправлять трансляции и т. Д.

Кстати, если вы действительно завернули все в try / catch, это может быть причиной того, что отчеты об ошибках не работают должным образом?: P

УдачиТом

1 голос
/ 24 февраля 2011

Я немного удивлен отсутствующей кнопкой «Отправить отчет».На каком уровне API вы создавали игру?Я обычно создаю уровень с вашим минимальным уровнем API, чтобы убедиться, что вы не используете никаких вызовов API, кроме этого, но затем переключаюсь обратно на самый высокий уровень API, чтобы вы могли использовать такие функции, как «установить на SD».* Я уверен, что есть хотя бы один пользователь, который написал вам письмо.Можете ли вы попросить их установить LogCollector и выслать вам по почте журнал?

Кстати, в общем, я бы не стал использовать Thread.setDefaultUncaughtExceptionHandler, поэтому есть возможность отправить отчет.(В вашем случае это зловеще отсутствует, но обычно оно должно быть там.)

Кстати, обработчик исключений применяется к текущему потоку.Если у вас есть приложение OpenGL, возможно, происходит сбой в потоке GL?

0 голосов
/ 24 февраля 2011

Разрешение Интернет звучит очень похоже на попытку передачи данных из сети, что очень быстро в вашей локальной сети, но внезапно становится медленным (и отнимает много времени), когда люди пробуют это через свои GSM-соединения. *

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

0 голосов
/ 24 февраля 2011

Возможно, закрытие силы вызвано остановками, а не исключениями. Пользователи могут не заметить разницу. Подобные проблемы могут возникать чаще, если пользователи запускают сервисы переключения ЦП одновременно с вашим приложением, что объясняет, почему вы не видите проблему в своем тестировании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...