2010-08-18 102 views
17

我有點茫然,在這裏。我在handleStopActivity中看到這些NullPointerException s的數量穩步增加。我懷疑隨着2.2版本升級到Droid所有者的增加,這只是一個猜測。我從來沒有見過這次崩潰,市場提供的堆棧跟蹤沒有提到我寫的任何類。因此,我不知道從哪裏開始解決問題。handleStopActivity中的NullPointerException - 沒有引用我的代碼在堆棧跟蹤

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) 

因爲我不知道原因,我也不知道,提供以幫助診斷什麼樣的信息,所以我給的overiew: 我的應用程序是WootWatcher。它跟蹤Woot.com並通知用戶出售新商品。它通過在單獨進程中運行的服務來完成此操作。服務和主要活動通過aidl接口和回調相互通信。我也在服務和活動中使用消息處理程序,並經常爲昂貴的任務生成線程。

+0

我運行機器人(仍然沒有2.2更新,等待...) 我會告訴你,如果我看到任何奇怪的東西。 – Nick 2010-08-19 12:37:11

+0

今天我得到了2.2更新,並且與應用程序一起玩了一下。我沒有看到任何問題。 – Nick 2010-08-20 01:33:43

+0

同一問題在這裏 – emmby 2011-10-19 09:25:04

回答

2

回頭看這個4歲的問題,我意識到我應該能夠診斷它,但不幸的是我找不到任何版本的AOSP這些線匹配。 Droid必須使用了一些未提供的源代碼版本。

也就是說,Froyo的handleStopActivity()沒有太多空指針異常的機會。當Activity已經停止或正在停止的過程中,最有可能指向Activity.finish()

這通常發生在您註冊最終呼叫finish()的聽衆時,並且您沒有取消註冊onPause()中的聽衆。

+0

接受的答案不upvoted爲什麼? – Siddharth 2015-05-19 04:54:18

+0

因爲你不能upvote你自己的答案:P – Sufian 2015-11-27 14:02:29

-2

也許嘗試在try-catch塊中包裝handleStopActivity方法並自己處理錯誤,給自己更多細節並防止「強制關閉」?

+2

您是否建議我修改Android的操作系統代碼? – BenTobin 2013-04-04 15:04:08

+0

@BenTobin你可以看看ActivityThread.java:3674上的內容,它有時可以給出提示。 Play商店中的錯誤報告是否提到Android的版本? – Matthieu 2013-12-23 18:26:12

1

如何報告Android項目的錯誤(將要求檢查是否有其他人報告)?如果沒有來自您的代碼位於堆棧跟蹤中,則會在框架中發出錯誤信號。儘管可能在您的其他代碼中,一個不言而喻的合同/假設。

+0

請將您的答案合併到一個答案中。 – 2013-04-02 18:43:54

+0

這些答案代表不同的方法 - 爲什麼要合併它們? – KarolDepka 2013-04-02 19:11:52

+0

@KarolDepka你可以在其中創建標題,但使它成爲一個單一的答案更適合StackOverflow。 – Sufian 2016-08-27 17:23:13

0

我不知道,如果你還在尋找一個解決方案,但這裏是我發現了什麼。如果您找到了真正的解決方案,請告訴我。

我剛剛有同樣的問題..我從來沒有這個問題,沒有改變代碼,它出現了某種原因。通過使用谷歌,我發現了約瑟夫發佈的問題,但似乎並不完全相同。我還發現thisthis。這兩個似乎有同樣的問題,但沒有解決方案..然後,我發現this blog

作者講述了一些有關它的原因 - Android中的一個錯誤。此外,它與Cursor有關。這並沒有解決我的問題,但我注意到,我使用Cursor,在致電startActivity(someIntent);(我也稱爲finish(),但刪除該行沒有什麼區別)之前幾行。
我試圖刪除包含Cursor,並突然它再次工作的線..
我不知道,爲什麼它的作品,但它的確如此。我只是將Cursor的代碼移到我的其他Activity

這絕對不是一個好的解決方案,但它適用於我。

還有一個問題:你甚至使用Cursor並呼籲startActivity(..)或類似的東西?

編輯:
我才發現,我沒有解決這個問題,我只是沒有足夠的測試。我開始的Activity運行良好,直到我想創建我之前開始的Activity中的下一個Activity。在開始下一個Activity時,我的應用程序再次崩潰。