티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Removing an activity from the history stack
액티비티 스택에서 액티비티 제거하기
문제 내용
My app shows a signup activity the first time the user runs the app, looks like:
제 앱은 사용자가 앱을 처음 실행할 때 회원 가입 화면을 보여줍니다.
- ActivitySplashScreen (welcome to game, sign up for an account?)
- ActivitySplashScreenSignUp (great, fill in this info)
- ActivityGameMain (main game screen)
1. ActivitySplashScreen (게임에 오신 것을 환영합니다. 계정에 가입하세요?)
2. ActivitySplashScreenSignUp (좋아요. 이 정보를 입력하세요)
3. ActivityGameMain (게임 메인 화면)
so the activities launch each other in exactly that order, when the user clicks through a button on each screen.
따라서 사용자가 각 화면의 버튼을 클릭할 때마다 화면이 정확히 그 순서로 시작됩니다.
When the user goes from activity #2 to #3, is it possible to wipe #1 and #2 off the history stack completely? I'd like it so that if the user is at #3, and hits the back button, they just go to the homescreen, instead of back to the splash screen.
사용자가 액티비티 #2에서 #3으로 이동할 때, #1과 #2를 완전히 스택에서 제거할 수 있을까요? 사용자가 #3에 있고 뒤로 버튼을 누르면 홈 화면으로 돌아가는 대신 대신 스플래시 화면으로 돌아가지 않기를 원합니다.
I think I can accomplish this with tasks (ie. start a new task on #3) but wanted to see if there was simpler method,
저는 이것을 작업으로 수행할 수 있다고 생각합니다(#3에서 새로운 작업 시작) 그러나 더 간단한 방법이 있는지 알고 싶습니다.
Thanks
감사해요.
높은 점수를 받은 Solution
You can achieve this by setting the android:noHistory
attribute to "true"
in the relevant <activity>
entries in your AndroidManifest.xml
file. For example:
AndroidManifest.xml 파일의 관련 <activity> 항목에서 android:noHistory 속성을 "true"로 설정하여 이를 수행할 수 있습니다. 예를 들어:
<activity
android:name=".AnyActivity"
android:noHistory="true" />
가장 최근 달린 Solution
It's too late but hope it helps. Most of the answers are not pointing into the right direction. There are two simple flags for such thing.
이미 늦었지만 도움이 되기를 바랍니다. 대부분의 답변이 올바른 방향을 가리키지 않고 있습니다. 이것에 대해 두 가지 간단한 플래그가 있습니다.
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
From Android docs:
Android 문서:
public static final int FLAG_ACTIVITY_CLEAR_TASK Added in API level 11
public static final int FLAG_ACTIVITY_CLEAR_TASK (API 레벨 11에서 추가됨)
If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the
activity to be cleared before the activity is started. That is, the activity becomes the new root of an otherwise empty task, and any old activities are finished. This can only be used in conjunction with FLAG_ACTIVITY_NEW_TASK.
이전 액티비티가 시작되기 전에 지워지는 액티비티입니다. 즉, 이전 액티비티가 종료되고 빈 태스크가 되며, 이 액티비티는 새로운 루트 액티비티가 됩니다. 이것은 FLAG_ACTIVITY_NEW_TASK와 함께만 사용할 수 있습니다.
출처 : https://stackoverflow.com/questions/1898886/removing-an-activity-from-the-history-stack
'개발 > 안드로이드' 카테고리의 다른 글
AsyncTask.OnPostExecute()의 결과를 메인 액티비티에서 받기 (0) | 2023.01.06 |
---|---|
뒤로 가기 두번 클릭으로 액티비티 종료하기 (0) | 2023.01.05 |
안드로이드 모바일 웹사이트(어플리케이션이 아닌)에서 WhatsApp으로 링크 공유하기 (0) | 2023.01.05 |
Android에서 파일로 문자열 읽기/쓰기 (0) | 2023.01.04 |
안드로이드에서 파일의 MIME 타입 확인하기 (0) | 2023.01.04 |