当我点击退出按钮时,它会保持循环

时间:2014-11-28 02:08:06

标签: android

我有一个问题 当我点击我的Android应用程序上的退出按钮,我用我的三星Note 3调试它。它将从应用程序的开始循环而不是退出到我的笔记3的主屏幕

下面是我的代码:

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.home);

        Button start=(Button)findViewById(R.id.btnStart);
        Button exit=(Button)findViewById(R.id.btnExit);

        start.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                /** start game */
                startLoop();

            }
            });

        exit.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                onDestory();
            }
        });

    }

    public void startLoop(){
        Intent game = new Intent(this, Splash.class);
        startActivity(game);

    }

    protected void onDestory(){
        int pid=android.os.Process.myPid();
        android.os.Process.killProcess(pid);
    }


}

3 个答案:

答案 0 :(得分:3)

只需致电finish() - 无需执行任何onDestroy()内容。

finish()会为您关闭该应用。

此外,只要您覆盖onDestroy(),请务必致电super.onDestroy()

答案 1 :(得分:1)

在点击监听器上的退出按钮上调用finish()。您也可以使用java的System.exit(0)

答案 2 :(得分:0)

这就是我处理游戏的方式......

GameWorld.java(或其他东西)需要对游戏状态进行控制

public void pauseThread() {
        gameLoop.setKeepPlaying(false);
}

GameLoop.java

// method for accessing the game logic
public void setKeepPlaying(boolean run) {
        keepPlaying = run;
}

和循环本身:

/** MAIN GAME LOOP */
    while (keepPlaying) {

    [...]
}

btw:驱动是Thread

的循环

编辑:示例onDestroy部分采用Android ....

@Override
protected void onDestroy() {
        Log.d("MainActivity", "***onDestroy()***");

        disableKeepScreenOn(getWindow(), TAG);

        unregisterReceiverAndStopServices();

        NotificationManager nManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        nManager.cancel(NOTIFICATION_GENERAL);

        super.onDestroy();

    }

这是一个菜单,它提供了一个关闭应用程序的条目......

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    super.onOptionsItemSelected(item);

    switch (item.getItemId()) {

    [...]
    case (OPM_EXIT):
        MainActivity.this.finish();
        return true;

    default:
        return false;
}
}