我是Android新手。我正在开发游戏,当我按下后退按钮时,我意识到我的活动的状态没有保存,所以我搜索了一下,我发现了Android生命周期。我读了它,现在我知道它们是如何工作的但事情是我不知道如何暂停和恢复我的活动或我应该使用什么代码,因为它是自动生成的网格,我的计时器是CountDownTimer。
当我按“返回”按钮时,此活动就会出现。 GameModeActivity
现在我想检测游戏是否还在继续..所以如果我再次点击游戏模式,那就应该出现。 GamePlayActivity
问题是网格恢复正常状态。当我点击按钮时,计时器永远不会运行。如果可能的话,我想恢复玩家的进度(比如地雷,旗帜和计时器本身的位置。)。
我的问题是......是否有特定的代码来获取整个活动状态?所以我可以暂停它,当我回来时它会恢复吗?
这是GameEngine类中的计时器和网格代码:
public static GameEngine getInstance() {
if (instance == null) {
instance = new GameEngine();
}
return instance;
}
private GameEngine() {
}
public void startit() {
countdowntimer = new CountDownTimer(60000, 1000) {
TextView timer = (TextView) ((GamePlayActivity) context).findViewById(R.id.tvTimeValue);
@Override
public void onTick(long millisUntilFinished) {
timer.setText("" + millisUntilFinished / 1000);
}
@Override
public void onFinish() {
timer.setText("Times up!");
timer.setTextColor(Color.RED);
}
}.start();
}
public static void cancel() {
if (countdowntimer != null) {
countdowntimer.cancel();
countdowntimer = null;
}
}
public void createGrid(Context context) {
Log.e("GameEngine", "Creating Grid..");
this.context = context;
int[][] GeneratedGrid = Generator.generate(bombnumber, WIDTH, HEIGHT);
setGrid(context, GeneratedGrid);
}
private void setGrid(final Context context, final int[][] grid) {
for (int x = 0; x < WIDTH; x++) {
for (int y = 0; y < HEIGHT; y++) {
if (MinesweeperGrid[x][y] == null) {
MinesweeperGrid[x][y] = new Cell(context, x, y);
}
MinesweeperGrid[x][y].setValue(grid[x][y]);
MinesweeperGrid[x][y].invalidate();
}
}
}
public Cell getCellposition(int position) {
int x = position % WIDTH;
int y = position / WIDTH;
return MinesweeperGrid[x][y];
}
public Cell getCellposition(int x, int y) {
return MinesweeperGrid[x][y];
}
我在GamePlayActivity的onCreate方法中调用GameEngine.getInstance()。createGrid(this)类 当我按下手机上的后退按钮时,它将转到之前的活动,即GameModeActivity。