2016-09-02 7 views
0

내 앱의 활동 구조는 다음 중 하나 일 수 있습니다.Android에서 상위 두 가지 활동을 제외한 모든 활동을 어떻게 지울 수 있습니까?

사례 1 : A> B> B> B> D

Case2 : A> B> D

Case3 : A> B> B> B> C> D

A> B

:

선택하면 내가 스택에 이것으로 끝내고 싶다고 활동 D의 옵션이 있습니다

이상적으로 B는 해당 활동의 새 인스턴스입니다. 처음에는 케이스 2에서 작동하는 ACTIVITY_FLAG_CLEAR_TOP에 해결책을 찾았다 고 생각했지만, 케이스 1 또는 케이스 3에서는 모든 '하복부'B 액이 그대로 유지되었습니다. A> B> B> B.

I 즉시 인스턴스를 시작 onNewIntent이나에서 onCreate 방법에 여분 ACTIVITY_FLAG_CLEAR_TOPACTIVITY_FLAG_SINGLE_TOP을 사용하여 활동가 시작하는 것을 사용하고, 포착 잠재적 대안의 해결책을 발견 인터넷 정련 액티비티 B.

그러나 코드 위주로보기에는 다소 어색한 것처럼 보입니다. 특히 액티비티 A를 고려할 때 홈 스크린은 (직관적 인 사물의 흐름에서) 계정간에 전환 할 때만 액세스해야합니다 (기술적으로 말하면 캐릭터, 게임처럼).

내가 생각했던 또 다른 해결 방법은 A와 B 사이에 화면 불러 오기 활동을 삽입하여 B를 다시 호출하고 B를 다시 시작할 수있게하는 것입니다. 그러나 그것은 또한 단순한 응용 프로그램이고 실제로 로딩 시간을 필요로하는 것이 없기 때문에 약간 둔한 것처럼 보입니다. 또한 B 액티비티의 모든 액티비티를 새로운 태스크에 넣을 가능성이 있습니다. 그러나 이것은 훨씬 더 불편하고 불필요하게 보입니다.

TLDR : A 이외의 모든 스택을 지우는 다른 방법과 새로운 활동 B가 있습니까? 또는 해결 방법을 사용하기위한 운명에 대한 답변입니다.

EDIT : 사용자가 D 액티비티에서 특정 옵션을 선택할 때까지 back stack이 필요합니다. 예를 들어 액티비티 D 또는 B (또는 C) 액티비티 중 하나에서 뒤로 키를 누른 경우, 바로 직전 활동으로 되돌아 가야합니다 (기본적으로 그러 하듯이). 그래서 내가 따라 가면서 활동을 마치면 효과가 없습니다.

답변

0

back stackActivity을 추가 할 필요가 없을 때마다 New Activities with Intent으로 전화하는 중 메서드를 호출하면됩니다. 예를 들어

, 당신의 호출 순서가

A는 경우 -> B -> C -> D -> E에서 돌아 오는 동안 E

그리고 B로 돌아 가야 .다음, Activity C에서 Activity D을 시작

동안 다음과 함께하고 Activity Efinish() 전화 Activity D에서 그와 함께 시작하면서 finish()를 호출합니다.

+0

나는 액티비티 D에서 특정 옵션이 선택 될 때까지 '백 스택 (back stack)'이 필요하다는 것을 지정해야합니다. 이것을 포함하도록 내 질문을 편집 할 것입니다. – Shieldwall