我正在制作自己的练习游戏。 一旦我的游戏变得越来越大,我注意到一旦主要活动是负载,就会有一些延迟。
所以在阅读之后,一些线程我想出了另一个活动(主要),显示一个启动画面,直到加载了真正的主(菜单)活动。
这很好用,但是因为我的游戏是在另一个活动,一旦我改变活动来玩游戏然后按下后退按钮,或者甚至当我再次呼叫真正的主要(菜单)活动时我再次面对这个糟糕的滞后/延迟。
所以为了总结,到目前为止我有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);
}