繁体   English   中英

在android studio中启动新活动后,应用未响应

[英]App not responding after launching a new activity in android studio

游戏从MainActivity类(扩展了Activity )开始,然后调用扩展了SurfaceViewGamePanel ,并且有许多类可以更新游戏,因此有一个类( GameplayScene )来检查触摸并检查游戏发生了什么( (如果用户赢了或输了),那么有一种更新方法可以检查玩家是赢还是输,以及玩家是赢还是输,那么我想开始一个具有重新启动游戏的按钮的新活动,

问题是:开始新活动(通过使用不扩展任何内容的类中的Intent )后,应用程序没有响应(但正确显示了新活动)

从()开始新活动的类:

public class GameplayScene implements Scene {   

public GameplayScene() {
....

@Override
public void recieveTouch(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            if (!youWin && !gameOver && player.getRectangle().contains((int) event.getX(), (int) event.getY()))
                movingPlayer = true;
                forBegin = false;
            if (gameOver && System.currentTimeMillis() - gameOverTime >= 2000) {
                reset();
                gameOver = false;
            }
            if (youWin && System.currentTimeMillis() - winTime >= 2000) {
                reset();
                youWin = false;

            }
            if(!youWin && !gameOver && !movingPlayer) {
                if(!forBegin && System.currentTimeMillis() - fireTime >= 200) {
                    touchFire = true;
                    count = 1;
                    fireTime = System.currentTimeMillis();
                }
            }
            break;
        case MotionEvent.ACTION_MOVE:
            if (!youWin && !gameOver && movingPlayer)
                playerPoint.set((int) event.getX(), (int) event.getY());
            break;
        case MotionEvent.ACTION_UP:
            movingPlayer = false;
            touchFire = false;
            break;
    }
}


//@Override
public void draw(Canvas canvas) {
    canvas.drawColor(Color.BLACK);
    //Drawable d = getDrawable(getResources(), R.drawable.bgi);
    //d.setBounds(0, 0,canvas.getWidth(), canvas.getHeight());
    //d.draw(canvas);
    //canvas.drawBitmap(bgi, null, new Rect(0, 0, canvas.getWidth(), canvas.getHeight()),new Paint());

    player.draw(canvas);
    obstacleManager.draw(canvas);

    if(gameOver) {
        Context contX = Constants.CONTEXT;
        Intent intent = new Intent(contX , result.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("toWR",0);
        contX.startActivity(intent);


    }
    if(youWin) {

        Context contX = Constants.CONTEXT;
        Intent intent = new Intent(contX , result.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("toWR",1);
        contX.startActivity(intent);
    }
  }
}

Android清单:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity android:name=".main_menu"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".MainActivity"
        android:screenOrientation="portrait" />
    <SurfaceView android:name=".GamePanel"
        android:screenOrientation="portrait" />
    <activity android:name=".result"
        android:screenOrientation="portrait" />
</application>

我假设您有某种DrawingThread(...)draw(...)委托给此Scene 如果真是这样,那么您可能的目标是每秒更新60次……这意味着此意图将尝试每秒启动60次。 这可能是导致您的应用似乎没有响应的原因。

而不是从此处启动意图,而是更改游戏状态(或重用gameOver状态)并中断游戏循环(绘制线程)。 然后,开始您的活动一次游戏圈之外,但你的线程完成之前。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM