2016-12-01 3 views
0

초기 활동이 O이고 다른 하나는 A입니다. A1,A2,A3으로 이동하여 각각의 양식을 채울 수 있습니다. 그래서 나는이 경로를 따라 :안드로이드에서 활동 인스턴스를 관리하는 방법

O> A> A1> A> A2> A> A3

내가 A3에서 오전 동안 내가 다시 버튼을 누르면 다시 O에 가고 싶어하지만 난 (A)의 모든 인스턴스에서 통과해야합니다 내가 A 만 (마지막 하나의 인스턴스있을 것이라는 점을 선언 할 수있는 방법을

을 (의 난 그래서 그들은 스택에 존재하지 될 것 A1,A2,A3에 대한 매니페스트에 finish() 또는 no history를 사용하는 가정하자) 하나) 스택에, 그래서 만약 내가 다시 버튼을 tw를 누르면 얼음은 O에 다시 갈 것인가?

+0

액티비티 'A'가 나타날 때마다 새로운 인스턴스가 생깁니 까? 왜 액티비티 'A'의 인스턴스가 하나만 있고 다른 모든 액티비티에서 돌아 가지 않는 것이 좋을까요? – Bryan

+0

이것은 기본 동작입니다. 어떻게하면 단일 인스턴스로 만들 수 있습니까? 그게 질문입니다 ... –

+0

왜 여러 인스턴스를 만들 필요가 있습니까? 로그 아웃 기능을 구현하고 있습니까? – Dilip

답변

3
@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this,O.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    finish(); 
} 
+2

이 답변이 좋은 반면, 다른/새로운 사용자가 어떻게 작동하는지 이해할 수 있도록 코드의 역할을 설명하십시오. 대부분의 안드로이드 개발자들은'Activity'와'Task' 스택을 이해하는 데 문제가 있습니다. – Bonatti

0

변경 singleTop로 활동 AlaunchMode. 이 문서에 언급 된 바와 같이 :

활동의 인스턴스가 이미 대상 작업의 상단에 존재하는 경우, 시스템 루트 의 호출이 아니라 그것의 onNewIntent() 메소드를 통해 해당 인스턴스의 의도 활동의 새 인스턴스를 만드는 것보다

자, 대신 A -> A1 -> A에서가는, 당신은 단지 finish() 활동 A1을 할 수있는 (또는 up button 사용) 활동 A의 인스턴스를 반환하는.