한 걸음 두 걸음
액티비티 실행 인텐트에 필요한 Flag 3가지 정리 ] FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP 본문
액티비티 실행 인텐트에 필요한 Flag 3가지 정리 ] FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP
언제나 변함없이 2019. 7. 14. 18:17Activity 생성하고 새로운 인스턴스를 만드는 경우 intent를 사용한다는 것을 대부분 알고 계실 것입니다. 이 때 그냥 startActivity()로 연결해서 만들어버릴 수도 있겠지만, 인텐트에 flag 값을 설정하여 액티비티를 만들 수도 있습니다.
Intent intent = new Intent(this, SubActivity.class);
intent.addFlag(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
이렇게 사용방법(?)을 익혔으니 각 플래그가 어떤 역할을 하는지 알아보도록 하겠습니다.
FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_NEW_TASK
새로운 태스크를 생성하여 그 태스크안에 엑티비티를 추가하게 됩니다.
단, 기존에 존재하는 태스크들중에 생성하려는 엑티비티와 유의미한 관계를 가지고 있는 태스크가 있다면 그곳으로 새 액티비티가 들어가게됩니다. 작업을 포그라운드 및 백그라운드로 이동시킬 수 있습니다.특정 작업의 모든 활동은 항상 동일한 순서로 유지됩니다.
FLAG_ACTIVITY_CLEAR_TOP
만약에 태스크에 호출하려는 엑티비티의 인스턴스가 이미 존재하고 있을 경우에
새로운 인스턴스를 생성하는 것 대신에 존재하고 있는 액티비티를 포그라운드로 가져옵니다.
그리고 호출한 인스턴스를 포그라운드로 가져올때까지 있었던 위의 인스턴스들을 모두 삭제합니다.
위에서 현재 실행중인 초록 인스턴스는 onNewIntent() 메소드에서 시작하는 새 인 텐트를 받거나 완료되어 새로운 인텐트로 다시 시작됩니다.
FLAG_ACTIVITY_SINGLE_TOP
액티비티를 호출할 때 호출된 액티비티의 인스턴스가 현재 태스크의 루트에 이미 실행중인 경우 활동이 재실행되지 않습니다( = 새로운 인스턴스를 생성하지 않습니다.)
출처https://developer.android.com/reference/android/content/Intent.html?hl=ko#FLAG_ACTIVITY_SINGLE_TOP https://tiann.tistory.com/18
'FrontEnd > Android' 카테고리의 다른 글
android apk파일 핸드폰에 설치하기 (0) | 2019.07.24 |
---|---|
안드로이드 스튜디오 / Android ] Build Variant 수정하여 build하기 (2) | 2019.07.23 |
Activity LifeCycle LaunchMode에 대해 이해하기 (0) | 2019.07.13 |
갤럭시 s10e 개발자 모드 옵션 활성화시키기 : 안드로이드스튜디오 개발 앱 설치하기~ (0) | 2019.07.02 |
Batterystats 데이터 파일 얻는 방법 (0) | 2019.06.12 |