我嚴格分隔了Android應用程序的不同部分之間的層次。 在執行的某個時候,我正在從Internet上的xml服務更新我的數據。該更新大約需要10秒鐘,並且完全在後臺完成 - 這意味着應用程序的用戶界面可以正常工作。然而,進一步調用我的類(後來 - DataManager),它負責數據更新(更新已經開始但尚未完成)使我的應用程序崩潰。拋出NullPointerException異常的對象。Android併發問題
所以我假設一次只有一個線程可以使用我的DataManager,而從其他線程調用DataManager最終會出現異常。
我嘗試了將'synchronized'關鍵字放在敏感方法附近的各種組合,但似乎更新正在執行 - 沒有任何東西可以使用我的DataManager中的任何東西。
在執行過程中與DataManager相關的其他類似乎也包含空對象。
我想我只是缺少某種設計模式,用於處理併發問題,也許任何人都可以建議我一些東西?
你能否提供一些你認爲是NullPointerException的根本原因的代碼。很難想到任何併發問題。 –
看看它是否只是一個NullPointerException,然後我可以自己處理它,我對調試Android應用程序非常有經驗。但是這個問題似乎影響整個應用程序。可悲的是我無法提供代碼,因爲它有太多的影響,代碼庫相當大......這不像我忘記初始化一些愚蠢的變量......當我沒有更新時,一切正常。更新實際上只涉及我的經理類中的四個ArrayLists。其實等一下,我可以發佈我的更新方法並解釋一下。 – Kostas
所以這是實現所有更新的實際方法:http://pastebin.com/gY3x8wiq 它直接(和間接)只能訪問四個ArrayLists。即使在執行過程中,其他對象也會受到影響。 – Kostas