2011-06-28 49 views
1

我們有一個Android應用程序,它非常穩定,可以在幾天內無任何錯誤地工作。過一段時間,我們遇到一個應用程序崩潰,並且每次我在堆棧看了看時間跟蹤它看起來是這樣的:Android UI行爲有時會拋出NullPointerException

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內部對象引用。

還有其他時間我們經歷過這種情況,其他堆棧跟蹤結束時也會再次使用Android內部堆棧跟蹤拋出NPE,而沒有引用任何其中的對象或方法,在這種情況下,它是小部件,最後一次我看到這樣的NPE來自LayoutView,而且我還發現另一個question哪個NPE已經在GroupView中拋出。

重點是應用程序的工作原理,我可以嘗試使用同樣的場景重現崩潰一千次,但沒有看到發生這種情況,但偶爾會發生這種情況。

有沒有其他人會遇到這種情況? 它可能與我們佈局我們的UI組件的方式有關嗎? 即使你只是有一個想法,請分享...

謝謝, 亞當澤哈維。

+0

您的ListAdapter的代碼在哪裏?或者您使用默認的代碼?這似乎是檢索視圖時的問題。 – codinguser

+0

這不是發生在代碼中的一個地方,我們想知道這是Android問題還是實現問題? – TacB0sS

回答

2

最有可能的原因是您的ListView正在更新,然後您已經調用了setListAdapter()。間歇性的,我建議你在這裏可能有一個線程問題:一個線程導致你的ListView在另一個線程調用setListAdapter()之前被更新。

相關問題