在Nexus 5x设备的Android运行时期间,字段成员突然变为空值
public class TestA
{
// While not final, could have been final as no writes other than in the constructor
private Object impossibleToBeNull;
public TestA()
{
impossibleToBeNull = new Object();
}
public void method1()
{
impossibleToBeNull.toString(); // Null pointer occurs here
}
}
不知何故,在我的Android应用程序的运行时期间,从上面的简化类示例中我的实际等效“method1”中抛出了NullPointerException。 我无法确定此变量为null的任何有效情况,因为它是在TestA构造函数中构造的,如果它在构造中失败,则不会有TestA实例调用“method1”。
我所拥有的唯一附加信息是在dispatchTouchEvent上发生的事件,特别是仅在Nexus 5x设备上发生(无法在其他设备上重现)。
在Nexus 5x上似乎有一种奇怪的行为,如果你用一个手势将两根手指放在一起并以恰当的方式将它们组合在一起,就会有成千上万的触摸输入事件消失。这在应用程序内部和主屏幕上都会发生,并且不限于任何一个应用程序。这可能是相关的,或者它可能只是为再现做了足够的输入动作。
答案 0 :(得分:0)
@yegodm似乎对我的帖子的评论是正确的。根据{{3}}因为对我的“TestA”对象的引用是从另一个线程设置的,所以非最终成员可能尚未发布到主存储器。他们的例子17.5-1很好地展示了这一点。