架構
FirstActivity:主菜單,啟動 GameActivity。
GameActivity:setContentView(new GameView(this)),GameView extends SurfaceView 運行遊戲循環線程。
GameOverActivity:結算頁面。
關鍵實現:GameActivity.onDestroy 啟動 GameOver
public class GameActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GameView(this));
}
@Override
protected void onDestroy() {
super.onDestroy();
// 遊戲結束(生命值歸零等)時會調用 finish() 觸發 onDestroy
startActivity(new Intent(this, GameOverActivity.class));
}
}
GameView 結束遊戲
public class GameView extends SurfaceView implements Runnable {
private volatile boolean running = true;
public void run() {
while (running) {
// 遊戲邏輯...
if (lives <= 0) {
running = false;
((Activity) getContext()).finish(); // 觸發 GameActivity.onDestroy
}
}
}
}
注意
running 用 volatile 保證線程可見性。
GameActivity 不要設置 noHistory,否則 onDestroy 後無法啟動新 Activity。
3. 現代遊戲開發建議使用 GameEngine (LibGDX/Unity) 或 GameView 內部狀態機管理場景切換,避免頻繁 Activity 跳轉開銷。