2013-01-01 5 views
2

이 작은 게임을 개발 중이므로 현재 2 가지 활동을 사용하고 있습니다 : 메뉴 활동 및 실제 게임 활동; 게임 활동이 메뉴의 활동에 의해 시작됩니다 (그에서 아무런 문제)Android에서 기존 활동 간 전환

는 다음 나는 다시 키를 사용하여 메뉴의 활동에 대한 게임 활동으로 전환 할 수 없습니다 :

public void onBackPressed() { 
    super.onBackPressed(); 
} 

가 지금은 다시 생각 메뉴 활동. 내가 만든 게임 활동이 중단되었습니다 (추측합니다). 어떻게 게임 활동으로 돌아갈 수 있습니까? (다시 시작하려면 어떻게해야합니까?)

답변

0

super를 호출하기위한 메서드를 재정의하는 것은 절대적으로 의미가 없습니다. 재정의가 무엇인지 다시 확인하십시오. 재정의하지 않으면 하위 클래스 메소드 A가 수퍼 클래스 메소드 A와 동일합니다. 따라서 하위 클래스에서 다른 버전의 A를 작성하도록 호출 할 수는 있지만 호출 할 수는 없습니다 슈퍼 클래스 방법 A, 그것은 쓸모가 없다.

활동에 관해서는 안드로이드에서 스택에없는 활동이 유지된다는 것을 희망 할 수 없습니다. 당신은 당신의 매니페스트에이를 추가 할 수 있습니다

<activity name=".GameActivity" 
    ... 
    android:launchMode="singleTop" /> 

하지만 비록, 그 안드로이드는 당신의 활동을 정리 보장되지 않으며이 재발하면 다시 작성하십시오. 그것이 안드로이드가 자원을 보존하는 방법입니다.

하지만 더 좋은 방법은 GameActivity 내부에서 (startActivity) MenuActivity를 다시 호출하는 것입니다. 그렇게하면 이전 GameActivity가 여전히 활동 스택에있게됩니다. 하지만 실제로는 안드로이드가 GameActivity를 재창조 할 수있는 제한적인 케이스가 항상있을 것입니다. 예를 들어 시스템에 메모리 부족이있는 경우

GameActivity의 상태를 유지하면 새 인스턴스조차도 이전 인스턴스와 동일한 상태로 다시 지정됩니다.

+0

무시 무시한 문제를 지적 해 주셔서 감사합니다. 실제로 어리석은 짓이었습니다. 그래서 나는 게임 데이터를 저장하고 게임 활동을 재현 할 것입니다. – ianos

0

뒤로 버튼이 게임을 일시 중지하는 일종의 "일시 중지"메뉴로 메뉴를 사용한다고 가정하면 뒤로 버튼으로 메뉴 활동에 대한 새로운 의도를 만든 다음 메뉴 활동에서 뒤로 버튼을 사용하게 할 수 있습니다 정상적으로 작동합니다.

물론 사용자가 메뉴에서 화면을 닫을 수 있기 때문에 메뉴 작업을 시작할 때 게임 데이터를 보존해야합니다.하지만 시스템이 본질적으로 게임 활동 (및 데이터)을 메모리에 유지합니다. 메뉴.

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(GameActivity.this, MenuActivity.class); 
    startActivity(intent); 
} 
1

Data Storage에 설명 된 방법 중 하나를 사용하여 수동으로 게임 상태를 저장해야합니다.

Menu Activity -> 
    Game Activity -> 
     Menu Activity 

당신은 완전히 재건보다는 게임 활동에 반환 할 수 있습니다

그러나 당신은 메뉴 활동의 새 복사본을 시작합니다. 물론 가비지 컬렉터가 게임 활동을 파괴하지 않는다는 보장은 없으므로 Game 상태를 onPause()에 저장해야합니다.