我严格分隔了Android应用程序的不同部分之间的层次。 在执行的某个时候,我正在从Internet上的xml服务更新我的数据。该更新大约需要10秒钟,并且完全在后台完成 - 这意味着应用程序的用户界面可以正常工作。然而,进一步调用我的类(后来 - DataManager),它负责数据更新(更新已经开始但尚未完成)使我的应用程序崩溃。抛出NullPointerException异常的对象。Android并发问题
所以我假设一次只有一个线程可以使用我的DataManager,而从其他线程调用DataManager最终会出现异常。
我尝试了将'synchronized'关键字放在敏感方法附近的各种组合,但似乎更新正在执行 - 没有任何东西可以使用我的DataManager中的任何东西。
在执行过程中与DataManager相关的其他类似乎也包含空对象。
我想我只是缺少某种设计模式,用于处理并发问题,也许任何人都可以建议我一些东西?
你能否提供一些你认为是NullPointerException的根本原因的代码。很难想到任何并发问题。 –
看看它是否只是一个NullPointerException,然后我可以自己处理它,我对调试Android应用程序非常有经验。但是这个问题似乎影响整个应用程序。可悲的是我无法提供代码,因为它有太多的影响,代码库相当大......这不像我忘记初始化一些愚蠢的变量......当我没有更新时,一切正常。更新实际上只涉及我的经理类中的四个ArrayLists。其实等一下,我可以发布我的更新方法并解释一下。 – Kostas
所以这是实现所有更新的实际方法:http://pastebin.com/gY3x8wiq 它直接(和间接)只能访问四个ArrayLists。即使在执行过程中,其他对象也会受到影响。 – Kostas