菜单和游戏活动之间的延迟

时间:2016-05-02 18:36:51

标签: java android android-activity delay

我正在制作自己的练习游戏。 一旦我的游戏变得越来越大,我注意到一旦主要活动是负载,就会有一些延迟。

所以在阅读之后,一些线程我想出了另一个活动(主要),显示一个启动画面,直到加载了真正的主(菜单)活动。

这很好用,但是因为我的游戏是在另一个活动,一旦我改变活动来玩游戏然后按下后退按钮,或者甚至当我再次呼叫真正的主要(菜单)活动时我再次面对这个糟糕的滞后/延迟。

所以为了总结,到目前为止我有3项活动。

1)加载启动画面然后调用MenuActivity的主要活动 2)MenuActivity基本上提供了启动设置和按钮 3)作为游戏的GameActivity

我可以轻松删除MenuActivity并将游戏与处理菜单的菜单活动以及图像/按钮的可见性混淆,但我想知道为什么这也会发生在未来的知识中。

这是延迟的MenuActivity

public class MainActivity extends AppCompatActivity {

RelativeLayout _layer = null;
SharedPreferences _res;
Boolean _onFirstLoad=true,_bgMusic,_doubleBackToExitPressedOnce = false;
ImageView _musicBtnStop, _musicBtnStart, _about, _infoBtn;
SharedPreferences.Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(_onFirstLoad)
    {
        loadAllContent();
        _onFirstLoad = false;
    }


    if (_bgMusic) {
        _musicBtnStart.setVisibility(View.INVISIBLE);

        BackGroundMusic.playMusic(); //starting
    } else {
        _musicBtnStart.setVisibility(View.VISIBLE);
        _musicBtnStop.setVisibility(View.INVISIBLE);
    }

    //Start Game Button
    _layer.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                callGameStart();
                return false;
            }
            return false;
        }
    });

    _musicBtnStop.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            callMusicStop();
        }
    });

    _musicBtnStart.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            callMusicStart();
        }
    });

    _about.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            callGameStart();
        }
    });

}

@Override
public void onBackPressed() {
    if (_doubleBackToExitPressedOnce) {
        super.onBackPressed();
        BackGroundMusic.quit();
        return;
    }

    _doubleBackToExitPressedOnce = true;
    Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            _doubleBackToExitPressedOnce=false;
        }
    }, 2000);
}

private void callGameStart() {
    Intent game = new Intent(this, GameInterface.class);
    startActivity(game);
}

private void callMusicStart() {
    BackGroundMusic.setMuted(false);

    _musicBtnStop.setVisibility(View.VISIBLE);
    _musicBtnStart.setVisibility(View.INVISIBLE);

    editor = _res.edit();
    editor.putBoolean("bgMusic", true);
    editor.apply();
}

private void callMusicStop() {
    BackGroundMusic.setMuted(true);

    _musicBtnStop.setVisibility(View.INVISIBLE);
    _musicBtnStart.setVisibility(View.VISIBLE);

    editor = _res.edit();
    editor.putBoolean("bgMusic", false);
    editor.apply();
}

private void loadAllContent() {
    BackGroundMusic.setParams(MainActivity.this, R.raw.background_sound); //setting the music file

    _layer = (RelativeLayout) findViewById((R.id.main));

    _res = getApplicationContext().getSharedPreferences("com.nvm.tapper.prefs.xml", 0); // load our xml database
    _bgMusic = _res.getBoolean("bgMusic", true);

    _musicBtnStop = (ImageView) findViewById(R.id.stopMusic);
    _musicBtnStart = (ImageView) findViewById(R.id.startMusic);

    _about = (ImageView) findViewById(R.id.about);
}

0 个答案:

没有答案