我正在写一个Android游戏,这是我所拥有的:

游戏循环的实现方式为:

我创建了一个自定义视图来扩展视图。然后在我的onDraw()方法中,我调用invalidate();。

主要活动:

在这里,我创建了一个自定义视图的实例,并使用setContentView()将其设置为当前视图。
我也使用OnTouch()方法获取触摸事件

一切正常且顺利,直到我做到了:

我创建了一个新的Graphthread类,并在run方法内部创建了一个循环。

public class Graphthread extends Thread
   {
    @Override
    public void run() {
         while(true)
       {

        }
    }
     }


然后我在MainActivity中创建了一个实例

Graphthread gth = new Graphthread();


并在我的onCreate方法中使用了gth.start()。

现在发生以下情况:

游戏运行不顺利。或者我应该说它像..运行一段时间..冻结几毫秒...再次运行...再次冻结,依此类推。

怎么了?

最佳答案

像这样的轻微抖动听起来像垃圾回收。如果您的后台线程(或其他线程)正在消耗大量内存,则GC可能需要运行得比预期的要频繁。这将导致您所描述的瞬间抖动。

08-17 23:37