我在Android应用的某个活动中遇到了一个相当微妙且无法察觉的错误。在某些情况下,当我将活动从横向转换为纵向,或反之亦然时,应用程序崩溃。这个错误特别困难和烦恼的是,当我进行转换时,活动中没有任何断点在调试模式中被击中。另外,logcat似乎没什么帮助,也没有任何东西出现在那里。
所以我会寻找一些关于什么可能导致方向改变崩溃的建议。我可以发布一些代码,但我显然无法发布所有内容,而且我不确定从活动中发布一些片段会有多大帮助。
答案 0 :(得分:1)
Activity
的生命周期是这样的,在方向更改事件中,不会调用onCreate()
和onStop()
(例如)。因此,如果您在onCreate()
中创建了对象,则在轮换后null
返回时,它们可能无法初始化(= Activity
)。检查代码中是否有可能在onCreate()
中初始化的对象。
此外,您可能还需要添加一些try..catch
个Log.e
消息。
说实话,如果你的应用程序崩溃,logcat中应该记录一个错误。
答案 1 :(得分:0)
在一次失败的测试之后,当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 Map的初始化中。
乍一看,这个问题似乎是"为什么这个代码不起作用"类型。但事实并非如此,因为无论是调试还是大部分时间,Logcat都无法揭示问题所在。
作为回家消息,如果您遇到Android代码中的错误,则不应单独依赖调试,因为它可能无法正常工作。 Logcat似乎已经来到这里,但即使它似乎每次都不可重复。