У нас есть стабильное приложение для Android, работающее в течение нескольких дней без каких-либо ошибок.время от времени мы сталкиваемся с сбоем приложения, и каждый раз, когда я смотрю на трассировку стека, это выглядит примерно так:
06-05 12:05:58.939: DEBUG/AndroidRuntime(3149): Shutting down VM
06-05 12:05:58.939: WARN/dalvikvm(3149): threadid=1: thread exiting with uncaught exception (group=0x40028a00)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): FATAL EXCEPTION: main
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): java.lang.NullPointerException
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.widget.AbsListView.obtainView(AbsListView.java:1304)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): atandroid.widget.ListView.makeAndAddView(ListView.java:1727)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.widget.ListView.fillDown(ListView.java:652)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.widget.ListView.fillGap(ListView.java:623)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2944)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2485)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.os.Handler.handleCallback(Handler.java:587)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.os.Handler.dispatchMessage(Handler.java:92)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.os.Looper.loop(Looper.java:142)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at android.app.ActivityThread.main(ActivityThread.java:4914)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at java.lang.reflect.Method.invokeNative(Native Method)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at java.lang.reflect.Method.invoke(Method.java:521)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-05 12:05:58.949: ERROR/AndroidRuntime(3149): at dalvik.system.NativeStart.main(Native Method)
Обратите внимание, что есть только ссылки на внутренние объекты Android.
В другой раз мы сталкивались с этим, другие трассировки стека заканчивали тем, что снова бросали NPE только с внутренней трассировкой стека Android, без какой-либо ссылки на какой-либо из наших объектов или методов в нем, в этом случаебыл виджет, и в последний раз, когда я видел такой NPE, он пришел из LayoutView, и я также нашел еще один вопрос , какой NPE был брошен в GroupView.
Точкав том, что приложение работает, и я могу попытаться воспроизвести сбой, используя тот же сценарий, тысячу раз, и не видеть, что это происходит, но время от времени это происходит.
Кто-нибудь еще испытывал это?Может ли это быть связано с тем, как мы размещаем наши компоненты пользовательского интерфейса?Даже если у вас есть идея, пожалуйста, поделитесь ...
Спасибо, Адам Зехави.