因为我被这个问题困住了,不知道我的错误在哪里,我需要问你们。当我第一次启动我的应用程序时,一切正常,但是当我按下手机上的“返回”按钮返回主屏幕并再次启动应用程序时(这不是真正的新启动,因为应用程序进入睡眠状态)它有一个真的很奇怪的行为。
我正在使用 opengles 在屏幕上绘制纹理,当我触摸时,纹理会发生变化。触摸将布尔值设置为 true,表示绘制其他纹理。但不知何故,当我测试它的值时它总是错误的,即使它刚刚从触摸事件被写入 true。我想知道,因为只有当我按下手机上的“返回”按钮时才会发生这种情况。当我使用主页按钮返回主屏幕然后返回应用程序时,这件事不会发生并且一切正常。
首先,我认为它与线程 2 个不同的线程(活动渲染线程和用于触摸事件的表面视图线程)有关,但即使在同步所有 get/set 方法时它仍然不起作用。我开始认为触摸线程的东西仍在旧对象上运行并在那里更改值,而渲染线程中的引用被新实例化,因此布尔值由触摸设置,但渲染线程仅采用默认值,因为它们不同对象显然是不可能的。
好吧,我的知识已经结束了,所以请赐教
编辑:好吧,我发现了错误...当设备从睡眠中恢复过来时,它创建了另一个对象(带纹理的正方形),然后触摸事件发生在未删除的旧对象上并绘制了新对象。
如果有人能告诉我从睡眠中恢复时调用了哪些确切的方法,那会很好吗?它只是 onResume 还是还有更多?那么引用呢,它们是否也会被删除,因为不应该创建另一个对象,我什至测试 == null 然后创建一个新对象,但不知何故,当它回来时这似乎是真的