在异步线程的Android 2.1中的错误?

时间:2012-01-13 09:17:50

标签: android multithreading nullpointerexception

我正在使用HandlerHandlerThread在我的应用程序中执行异步加载,但出现了问题,例如:

handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        .....................
    }

}, 100);

此处理程序wrip(sic)位于新的HandlerThread中,并在onCreate()中创建。

似乎没有问题,但是有时会出现错误,其中一个例子就是在此处理程序上导致NullPointerException - 它之前是稳定的 - 但是当我在2.1版本模拟器上测试时发生了一些时间,我无法解决它,你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您是否考虑过代码中的竞争条件?听起来好像处理程序代码没有执行正确的同步 - 有时可能会看到来自不同线程的更改 - 这又会导致你的nullPointer异常。

尝试将问题代码包装在同步块中 - 或者如果仅使用primitve类型 - 请移动到volatile或atomic类型。