내 응용 프로그램의 모든 활동을 보려면 사용자가 로그인해야합니다. 사용자는 거의 모든 활동에서 로그 아웃 할 수 있습니다. 이것은 응용 프로그램의 요구 사항입니다. 사용자가 로그 아웃하면 언제든지 사용자를 Login으로 보내려고합니다 Activity
. 이 시점에서이 활동이 히스토리 스택의 맨 아래에 있기를 원하므로 "뒤로"단추를 누르면 사용자가 Android 홈 화면으로 돌아갑니다.
나는이 질문이 몇 가지 다른 장소를 요구하는 것을 보았습니다. 모두 비슷한 대답으로 대답했습니다.
설명서에 설명 된 것처럼 Intent
플래그를 설정하여 로그인 활동을 열려고 FLAG_ACTIVITY_CLEAR_TOP
했지만 로그인 활동을 기록 스택의 맨 아래에 배치하고 사용자가 다시 탐색하지 못하게하는 목표를 달성하지 못했습니다. 이전에 본 로그인 활동 또한 android:launchMode="singleTop"
매니페스트에서 Login 활동에 사용해 보았지만 이것이 목표를 달성하지 못합니다 (어쨌든 효과가없는 것 같습니다).
나는 역사 스택을 지우거나 이전에 열었던 모든 활동을 끝내야한다고 생각합니다.
한 가지 옵션은 각 활동의 onCreate
확인 상태를 finish()
로그인하고 로그인하지 않은 경우입니다. 이 옵션이 마음에 들지 않습니다. 뒤로 버튼을 계속 사용할 수 있으므로 활동이 닫힐 때 뒤로 돌아갑니다.
다음 옵션은 LinkedList
모든 곳에서 정적으로 액세스 할 수있는 모든 열린 활동 (아마도 약한 참조를 사용)에 대한 참조 를 유지하는 것입니다. 로그 아웃하면이 목록에 액세스하여 이전에 열었던 모든 활동을 반복 finish()
하여 각 활동을 호출 합니다. 아마이 방법을 곧 구현하기 시작할 것입니다.
Intent
그러나 오히려 이것을 달성 하기 위해 깃발 속임수를 사용하고 싶습니다 . 위에서 설명한 두 가지 방법 중 하나를 사용하지 않고도 응용 프로그램 요구 사항을 충족시킬 수 있다는 사실을 알게되어 기쁩니다.
Intent
설정 또는 매니페스트 설정 을 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 아니면 두 번째 옵션 LinkedList
인 열린 활동을 유지하는 것이 최선의 옵션입니까? 아니면 내가 완전히 간과하는 또 다른 옵션이 있습니까?