我正在使用Handler
和HandlerThread
在我的应用程序中执行异步加载,但出现了问题,例如:
handler.postDelayed(new Runnable() {
@Override
public void run() {
.....................
}
}, 100);
此处理程序wrip(sic)位于新的HandlerThread中,并在onCreate()
中创建。
似乎没有问题,但是有时会出现错误,其中一个例子就是在此处理程序上导致NullPointerException
- 它之前是稳定的 - 但是当我在2.1版本模拟器上测试时发生了一些时间,我无法解决它,你能帮助我吗?
答案 0 :(得分:1)
您是否考虑过代码中的竞争条件?听起来好像处理程序代码没有执行正确的同步 - 有时可能会看到来自不同线程的更改 - 这又会导致你的nullPointer异常。
尝试将问题代码包装在同步块中 - 或者如果仅使用primitve类型 - 请移动到volatile或atomic类型。