- [Android] Activity 스택 관리 (feat. Intent와 Flag)2023년 12월 01일 23시 36분 52초에 업로드 된 글입니다.작성자: 핀수728x90반응형
Case1. 특정 액티비티를 상단에 띄우기
A - B - C 순으로 스택이 쌓였다고 할 때, C가 사용자의 화면에 떠있을 것이다.
이때 C에서 A로 이동하면서 B, C를 스택에서 제거하고 싶다면
Intent의 Flag 중 FLAG_ACTIVITY_CLEAR_TOP 을 사용하면 된다.
Intent intent = new Intent(this, AActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish();
이동하려는 액티비티가 스택에 이미 존재하면 그 위에 쌓여있는 모든 스택을 제거하고 해당 액티비티가 다시 상단에 오르게 되는 것이다.
Case2. 스택을 모두 제거하고 싶을 때
스택에 이동하려는 액티비티만 두고 싶을 때,
FLAG_ACTIVITY_NEW_TASK 와 FLAG_ACTIVITY_CLEAR_TASK 를 사용하면 된다.
Intent( context, AActivity::class.java ).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) startActivity(this) } activityAnimationMove() finish()
FLAG_ACTIVITY_NEW_TASK
스택에서 새 작업이 시작됨을 의미
새로운 작업을 시작하려는 액티비티가 이미 스택에 존재하면 새로 시작하지 않고
현재 액티비티 위로 올라오게 됨
FLAG_ACTIVITY_CLEAR_TASK
startActivity() 가 실행되기 전에 액티비티와 연결된 모든 스택이 사라지도록 함
FLAG_ACTIVITY_NEW_TASK 랑만 사용할 수 있다고 함
Intent
메시징 객체, 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있다.
(*앱 구성 요소 : 액티비티, 서비스, 브로드캐스트 리시버, 콘텐츠 제공자)
FLAG
Intent 클래스에서 정의됨
인텐트에 대한 메타데이터 같은 기능을 함
안드로이드 시스템에서 액티비티를 시작할 방법에 대한 지침을 줄수도 있고
액티비티를 시작한 다음 어떻게 처리해야할지를 알려줄 수도 있다.
공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다.
말씀해주시면 수정하겠습니다. 감사합니다.
References
아래 글을 참고하여 작성 되었습니다.
인텐트 및 인텐트 필터 | Android 개발자 | Android Developers
An Intent is a messaging object you can use to request an action from another app component . Although intents facilitate communication between components in several ways, there are three fundamental use cases: An Activity represents a single screen in…
developer.android.com
Intent | Android Developers
developer.android.com
728x90반응형'pinslog > Log.daily()' 카테고리의 다른 글
[Git] 머지 취소하기 (0) 2023.12.05 [Flutter] iOS 디바이스 개발자 옵션 및 연결 관련 문제 해결하기 (0) 2023.12.02 [Java, Kotlin] SimpleDataFormat 밀리세컨까지 나타내기 (0) 2023.11.30 [Android] onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) (0) 2023.11.16 [NCP CSR] 기능 구현을 하며 만난 에러와 대응방안 (0) 2023.11.14 다음글이 없습니다.이전글이 없습니다.댓글