我正在编写一个 Android 游戏,这就是我所拥有的:
游戏循环实现为:
我制作了一个扩展 View 的自定义 View 。然后在我的 onDraw() 方法中,我调用 invalidate();
主要 Activity :
在这里,我创建了一个自定义 View 的实例,并使用 setContentView() 将其设置为我的当前 View 。 我还使用 OnTouch() 方法来获取触摸事件
一切都工作顺利,直到我这样做:
我创建了一个新类 Graphthread,并在 run 方法中创建了一个循环。
public class Graphthread extends Thread
{
@Override
public void run() {
while(true)
{
}
}
}
然后我在我的 MainActivity 中创建了一个实例
Graphthread gth = new Graphthread();
并在我的 onCreate 方法中使用了 gth.start() 。
现在发生了以下情况:
游戏运行不顺畅。或者我应该说它就像..运行一段时间..卡住几毫秒...再次运行...再次卡住等等。
发生了什么?
最佳答案
像这样的轻微抖动听起来像是垃圾收集。如果您的后台线程(或其他线程)消耗大量内存,GC 可能需要比预期更频繁地运行。这会导致如您所描述的短暂的紧张。
关于java - 由于后台线程,UI 无法顺利更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21996743/