我正在写一个安卓游戏,这就是我所拥有的:
游戏循环实现为:
我创建了一个扩展视图的自定义视图。然后在我的onDraw()方法中,我调用invalidate();
MainActivity:
这里我创建一个自定义视图的实例,并使用setContentView()将其设置为我当前的视图。 我还使用OnTouch()方法来获取触摸事件
一切都很顺利,直到我这样做:
我创建了一个新类Graphthread,在run方法中,我创建了一个循环。
public class Graphthread extends Thread
{
@Override
public void run() {
while(true)
{
}
}
}
然后我在MainActivity中创建了一个这样的实例
Graphthread gth = new Graphthread();
并在我的onCreate方法中使用了gth.start()。
现在发生了以下情况:
游戏运行不顺利。或者我应该说它就像..运行一段时间......微风几毫秒......再次运行......再次冻结等等。
发生了什么事?
答案 0 :(得分:1)
像这样的轻微抖动听起来像垃圾收集。如果您的后台线程(或其他内容)占用了大量内存,则GC可能需要比预期更频繁地运行。这会引起你所描述的瞬间紧张。
答案 1 :(得分:0)
尝试更适合游戏的方法:使用SurfaceView
和后台线程来绘制它。这可以让你摆脱口吃,由主线程的不规则消息处理。
onDraw
hack只适用于想要在常规应用程序(而不是游戏)中制作动画的内容,并且动画框架对您没用。例如,平移和缩放图像。