Android检测崩溃

时间:2015-02-03 11:14:17

标签: java android

我正在为我的应用程序获取此崩溃日志:

java.lang.IllegalStateException
android.widget.ListView.layoutChildren(ListView.java:1544)
android.widget.AbsListView.onTouchModeChanged(AbsListView.java:3543)
android.view.ViewTreeObserver.dispatchOnTouchModeChanged(ViewTreeObserver.java:732)
android.view.ViewRootImpl.ensureTouchModeLocally(ViewRootImpl.java:3170)
android.view.ViewRootImpl.ensureTouchMode(ViewRootImpl.java:3154)
android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3397)
android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3347)
android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4456)
android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4434)
android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4538)
android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
android.os.MessageQueue.nativePollOnce(Native Method)
android.os.MessageQueue.next(MessageQueue.java:125)
android.os.Looper.loop(Looper.java:124)
android.app.ActivityThread.main(ActivityThread.java:4921)
java.lang.reflect.Method.invokeNative(Native Method)
java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
dalvik.system.NativeStart.main(Native Method)

但是,我无法在这一行中看到任何与我的代码无关的内容。任何想法我怎么能发现崩溃?

2 个答案:

答案 0 :(得分:4)

ListView.layoutChildren()中获取IllegalStateException的方法是使适配器项目数与列表视图的预期不同。

如果您更改了listview适配器中的数据但忘记调用notifyDataSetChanged(),或者在后台线程中修改了数据,则会发生这种情况。

答案 1 :(得分:0)

如果您遇到崩溃而无法检测到,只需使用adb debbuging即可。 在代码中放置一个断点并在调试中运行应用程序。

点击断点并逐步执行该程序直至崩溃。一旦你遇到崩溃,你就会知道破解的确切代码行! 假设您正在使用android studio,请使用shift + f9在调试中运行。