活动GameActivity:首次打开应用程序时打开的页面。
活动GameMain:游戏的游戏活动。
活动GameWin:转到下一个GameActivity(最终将显示“您赢了!”屏幕,其中包含统计信息和相关信息)


应用程序启动
这被触发:

button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new OnClickListener() {

    public void onClick(View arg0) {
        Intent intent = new Intent(context, GameMain.class);
        intent.putExtra("level",1);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
    }

});

GameMain现在已加载。字符circle现在位于屏幕的左侧。
circle到达屏幕右侧时,游戏循环中的if语句现在变为true:

    if ((circle.x+width/2 > end.startx) && (circle.x-width/2 < end.stopx) && (circle.y+circle.size==end.starty-width/2)) {
            layout.removeAllViews();
            Intent intent = new Intent(context, GameWin.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.putExtra("level",level);
            finish();
            startActivity(intent);
    }

GameWin屏幕执行以下操作:

    Log.v(TAG,"Goint to level: "+(level+1));
    Intent intent = new Intent(context, GameMain.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("level",(level+1));
    startActivity(intent);
    finish();

有时它可以工作,并且将级别数据设为2并转到GameMain,这比我通过级别屏幕并直接转到level2的速度要慢得多。有时它可以工作,并且将级别数据设为2并转到GameMain,并一遍又一遍地重新加载页面。有时,我的手机会重新启动。
如果我有能力完成第2级,则可以这样做。如果级别3可以工作,刷新或重新启动手机,则速度甚至会更慢。
如果我随时单击“主页”,它将转到我的主屏幕,但是应用程序将使用上一级将自身打开回到GameMain(返回步骤6或7)。


我究竟做错了什么?

API级别8,LG P500(2.3.3)

事实证明这不是问题。游戏循环仍在后台运行。

最佳答案

您可以尝试以下两种方法:


在GameMain中,确保在startActivity(intent)之前先呼叫finish()
noHistory添加到清单中的活动并设置为true


编辑您应该开始将日志记录语句添加到函数和回调中。这将显示运行情况,并为您提供耗时的时间信息。例:

onCreate(){
   Log.i(TAG, "onCreate++");
   super.onCreate();

   //other code here

   Log.i(TAG, "onCreate--");
}

10-07 12:51