Android中的锁定屏幕可加快游戏速度

时间:2011-07-25 19:18:25

标签: android handler runnable performance resume

我正在使用Handler发布延迟的Runnable来更新我的游戏。

public class Example implements Runnable
{
  Handler handler;
  public Example()
  {
    handler = new Handler();
    handler.postDelayed(this,10);
  }
  public void run()
  {
    handler.postDelayed(this,10);
  }
}

每当我按下锁定屏幕按钮然后恢复游戏时,它的运行速度比预期的要快得多。每次我锁定屏幕并恢复,它运行得越来越快。但是,如果我重新启动活动或完成然后重新打开活动,它将再次以正常速度运行。请帮忙。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

每次锁定屏幕然后恢复时,似乎正在发生的事情就是在Runnable之上另外Runnable你已经加倍了你的运行,从而使线程越来越快每当你锁定你的屏幕时,你需要以某种方式暂停你的线程,如thread.sleep()或类似的东西,所以当你恢复时,你不会重新创建一个新的Runnable,而只是从你离开的地方开始你的主题。

如果您使用Runnable方法制作新的onCreate。它会在手机旋转时,或者当手机恢复等时被调用,这就是为什么你可能遇到这个问题。在finish()您的活动或关闭您的应用后不会发生这种情况的原因是,当您重新启动应用时,Runnable将创建一次,直到您开始锁定手机并再次恢复等

您可能还想查看可用于帮助处理线程的内部类:

public class YourClass extends Activity {

    public void yourUpdateMethod() {
        runOnUiThread(new Runnable() {
            public void run() {
                new YourUpdateClass().execute(0, null, null);
            }
        });
    }

    private class YourUpdateClass extends AsyncTask<Integer, Void, Void> {


            @Override
            protected synchronized Void doInBackground(Integer... index) {
                return null;
            }

            @Override
            protected synchronized void onPostExecute(Void result) {
                //your statements here
            }
    }
}

这可能有助于处理必须暂停/重新启动/恢复的线程或者更好的线程。更多信息:http://developer.android.com/reference/android/os/AsyncTask.html

Dunno如何在游戏中发挥作用,但没有玩弄它。

祝你好运,希望这会有所帮助。