2012-07-05 2 views
7

HomeView는 SurfaceView가 있고 카메라 미리보기 그림을 보여주는 HomeActivity라는 활동이 있습니다. 이 활동은 조용하고 무거 우며 시작/다시 시작하면 느려집니다.onCreate는 의도와 함께 탐색 할 때 항상 호출됩니다.

그래서 몇 가지 조사를 통해 어떻게 든 항상 onCreate 메서드가 호출된다는 것을 알았습니다. 활동이 이미 시작된 경우에는 내 생각에이 일이 발생하지 않아야합니까?

documentation 메시지 : 활동이 처음 생성 될 때 호출됩니다. 여기서 뷰를 생성하고 목록에 데이터를 바인드하는 등의 일반적인 정적 설정을해야합니다.이 방법은 활동의 이전 고정 상태 (있는 경우)가 포함 된 번들을 제공합니다. 항상 onStart()가 계속됩니다.

protected void gotoHome() { 
    final Intent intent = new Intent(SomeOtherActivity.this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 

편집 :

여기

것은 내가 떠나고 방법 HomeActivity ... 특별한 아무것도 : 여기

다시 가고 처리하는 방법이다

final Intent i = new Intent(HomeActivity.this, SomeOtherActivity.class); 
startActivity(i); 
+0

다른 활동을 시작할 때 HomeActivity를 끝내지 않도록하십시오(). – Egor

+0

onCreat() 메소드가'gotoHome()'으로 돌아갈 때 호출됩니까? –

+0

@Enter finish()를 호출하지 않습니다 – Mark

답변

14

예, 경우 HomeActivity로 돌아가려면 다음 플래그를 사용해야합니다.

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 

여기 Intent.FLAG_ACTIVITY_CLEAR_TOP에 대한 설명서에서 관련 부분입니다 :

위의 예에서 활동 B의 현재 실행중인 인스턴스 것이다 중 당신이 onNewIntent 여기에서 시작하는 새로운 의도를 수신() 메소드 새로운 인 텐트로 끝내고 다시 시작하십시오. 실행 모드가 "다중"( 기본값)으로 선언되어 있고 동일한 의도로 FLAG_ACTIVITY_SINGLE_TOP을 설정하지 않은 경우 완료되고 다시 생성됩니다. 다른 모든 시작 모드의 경우 또는 FLAG_ACTIVITY_SINGLE_TOP이 설정된 경우이 인 텐트는 현재 인스턴스의 onNewIntent()에 전달 된 이됩니다.

+0

대단히 고마워요! Facepalm ... 자기가이 아이디어를 가질 수 있습니다! – Mark

+0

때로는 여기에서 유용한 답변을 얼마나 빨리 얻을 수 있는지 놀라는 경우가 있습니다. 도움이되기를 기뻐합니다. –

+0

안녕 데이비드, 내 activitiy의 oncreate 때마다 내가 그 아이의 활동에서 돌아올 때마다 불러옵니다, pls 날 도울 수 있습니까? –

관련 문제