NullPointerException в handleStopActivity - нет ссылки на мой код в трассировке стека - PullRequest
17 голосов
/ 18 августа 2010

Я немного растерялся, здесь.Я наблюдаю неуклонно растущее число этих NullPointerException с handleStopActivity.Я подозреваю, что увеличение количества убийств с увеличением количества обновлений до 2.2 для владельцев Droid, хотя это только предположение.Я никогда не видел сбой сам, и трассировка стека, предоставленная рынком, не упоминает ни один из классов, которые я написал.Таким образом, я понятия не имею, с чего начать при устранении проблемы.

java.lang.NullPointerException
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3674)
at android.app.ActivityThread.access$2600(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2153)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

Поскольку я не знаю причину, я также не знаю, какую информацию предоставить для помощи в диагностике, поэтомуЯ дам обзор: мое приложение - WootWatcher.Он отслеживает Woot.com и уведомляет пользователей о новых товарах для продажи.Это делается с помощью службы, которая выполняется в отдельном процессе.Служба и основная деятельность связываются друг с другом через интерфейс помощи и обратный вызов.Я также использую обработчики сообщений как в службе, так и в деятельности, и часто порождаю потоки для дорогостоящих задач.

Ответы [ 5 ]

2 голосов
/ 23 августа 2014

Оглядываясь назад на этот 4-летний вопрос, я понимаю, что смогу его диагностировать, но, к сожалению, я не могу найти ни одну версию AOSP, для которой эти строки совпадают.Дроид, должно быть, использовал какую-то измененную версию источника, которая не была доступна.

Тем не менее, handleStopActivity() Froyo не имеет много возможностей для исключения нулевого указателя.Скорее всего, можно указать Activity.finish(), когда действие уже было остановлено или находится в процессе остановки.

Это обычно происходит, когда вы регистрируете слушателей, которые в конечном итоге вызывают finish(), и вы не отменяете регистрацию этих слушателей в onPause().

1 голос
/ 02 апреля 2013

Как насчет сообщения об ошибке в Android Project (будет ли обязательна проверка, если кто-то еще сообщит об этом)?Если в трассировке стека нет кода от Вас, это будет сигнализировать об ошибке в фреймворке.Хотя, возможно, в другом коде вы нарушаете, например, невысказанный контракт / допущение.

0 голосов
/ 15 мая 2013

Не знаю, если вы все еще ищете решение, но вот что я узнал. Если вы нашли реальное решение, пожалуйста, дайте мне знать.

У меня просто была такая же проблема .. У меня никогда не было этой проблемы, и без изменения кода она появилась по какой-то причине. Используя Google, я нашел вопрос, который опубликовал Джозеф, но, похоже, он не совсем такой. Я также нашел это и это . Кажется, у этих двоих одна и та же проблема, но нет решения. Тогда я нашел этот блог .

Автор рассказывает кое-что о том, откуда он - ошибка в Android. Кроме того, это связано с Cursor. Это не решило мою проблему, но я заметил, что я использовал Cursor, за несколько строк до вызова startActivity(someIntent); (я также назвал finish(), но удаление этой строки не имело значения).
Я попытался удалить строки, включающие Cursor, и вдруг он снова работает ..
Я понятия не имею, почему это работает, но это работает. Я просто переместил код с Cursor на другой Activity.

Это определенно не очень хорошее решение, но оно работает для меня.

Есть только еще один вопрос: вы даже используете Cursor и звоните startActivity(..) или что-то подобное?

Edit:
Я только что узнал, что я не решил проблему, я просто недостаточно тестировал. Activity, который я начал, работал нормально, пока я не захотел создать следующий Activity из того Activity, который я начал раньше. При запуске следующего Activity мое приложение снова падает.

0 голосов
/ 03 апреля 2013

Обратитесь к ответу на этот вопрос.Выглядит как известная проблема и тоже имеет решение.Надеюсь, это поможет ...

Исключение NullPointerExtate для onSaveInstanceState с фрагментами Android

0 голосов
/ 02 апреля 2013

Может быть, попробовать обернуть метод handleStopActivity в блок try-catch и самостоятельно обработать ошибку, предоставив себе больше деталей и не допуская принудительного закрытия?

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