2017-04-11 5 views
1

MainActivityChildAaActivityChildBbActivity이있는 앱이 있습니다.내 액티비티의 단일 인스턴스를 백 스택과 함께 사용하려면 어떻게해야합니까?

MainActivity는 우리를 자식 활동 중 하나에 보내고 사용자는 원하는대로 두 자식 활동 사이를 이동할 수 있습니다.

그러나 이러한 활동마다 하나의 인스턴스 만 있어야합니다. 내가 할 경우

문제는 자식 활동 singleInstance 후 그들은 모두 별도의 작업을하고 아이에게 다시 다른 응용 프로그램으로 전환하고

(나는 MainActivity에 반환해야하는 경우) onBackPress 나는 응용 프로그램을 종료한다는 것을 의미한다

launchMode을 표준으로두면, 특히 두 아이 사이를왔다 갔다 할 때 특히 여러 액티비티 인스턴스가 생깁니다. 내가 singleTop를 사용하는 경우

, 나는 내가 아이들에 noHistory를 사용하는 경우 I 자유롭게 (첫째 다시 눌러 MainActivity에 저를 돌려 준다)

분명히 isTaskRoot()를 사용하여 그들 사이에 이동할 수 없습니다

모두 문제가 늘

가 어떻게 정확하게 내가 원하는 동작을 달성한다 항상 사실 때문에, 버그를 종료 응용 프로그램을 수정 singleInstance 작업 (다른 시나리오에 유용하지 않습니다)?

  • 같은 작업에서 다시 스택
  • 모든 각 활동의 하나의 예/onBackPress 스위칭 애플리케이션
+1

이렇게하면 어떻게됩니까? 두 개의 활동, MainActivity 및 ChildActivity가 있고 ChildActivity는 시작할 때 FragmentA 또는 FragmentB 중 하나를 표시합니다. 그런 다음 ChildActivity를 유지하면서 조각 트랜잭션을 사용하여 FragmentA와 FragmentB간에 쉽게 전환 할 수 있으며 필요한 경우 MainActivity로 쉽게 이동할 수 있습니다. –

답변

1

후 당신은 어떤 특별한 발사 모드가 필요하지 않습니다 종료되지 않습니다. 당신이 아이 Activity를 시작할 때마다 다음과 같은 플래그 사용 (

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

이것은 (있는 경우) 작업 스택의 전면에 Activity의 기존 인스턴스를 이동하거나 새 인스턴스를 만들 것이다 경우가 기존 인스턴스가 아님).

+0

고마워요, 이것이 해결책 인 것 같습니다. 나는 깃발을 사용하는 것을 고려하고 있었지만, 미래의 변경에 놓친 적이 없도록하기 위해 매니 페스트와 동등한 것을 기대하고 있었다. –

+0

아니, 매니 페스트에서 이것을 할 방법이 없다. 그것은 구성적인 것보다 행동에 더 가깝습니다. 기존 인스턴스를 다시 사용할지 여부는 구성 할 수있는 것이 아닙니다. –