지난 시간, 액티비티 스택에 이어
이번에는 FLAG_ACTIVITY_SINGLE_TOP 에 대해서 확인 해보자.
FLAG_ACTIVITY_SINGLE_TOP
플래그는 하기 구글 API 문서의 내용 대로,
액티비티 스택의 가장 위 에 호출하려고 하는 액티비티가 설정되어 있으면 다시 호출 하지 않는다는 설정이다.
If set, the activity will not be launched if it is already running at the top of the history stack.
https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_SINGLE_TOP 기본 개념은 하기와 같다.
액티비티 스택 최상단에 Activity2 번이 있을 경우, 또 다시 Activity2 번을 호출하면
새로 만들어지는 것이 아니고 기존 Activity2 가 불려진다.
안드로이드 스튜디오를 통해 확인 해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public void onButtonPressed2(View view){
Intent intent = new Intent(this, Activity2.class);
intent.addFlags(intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
D/test: MainActivity-onPause
D/test: Activity2-onCreate
D/test: Activity2-onResume
//intent.addFlags(intent.FLAG_ACTIVITY_SINGLE_TOP);
D/test: Activity2-onPause
D/test: Activity2-onResume
|
cs |
1. MainActivity -> Activity2 -> Activity2 로 이동 시
Activity2 에서 Activity2 를 호출시 FLAG_ACTIVITY_SINGLE_TOP 플래그 를 설정하였다.
결과는 Activity2 의 onPause() -> onReusme() 함수를 호출한다.
즉, 새롭게 만들지는 않는다는 것이다. Activity2 를 반복적으로 호출하여도 결과는 동일하다.
2. Activity2 -> MainActivity -> 앱 종료
백 키로 앱 종료시에는 화면별로 종료가 됨을 확인 할 수 있다.
1
2
3
4
5
|
D/test: Activity2-onPause
D/test: MainActivity-onResume
D/test: Activity2-onDestroy
D/test: MainActivity-onPause
D/test: MainActivity-onDestroy
|
cs |
FLAG_ACTIVITY_SINGLE_TOP 플래그는 액티비티 이동 중 최상단 화면의 중복된 호출을 원치 않을때도
유용하게 사용할 수 있다.
각자 상황에 맞게 잘 활용하면 되겠습니다.
감사합니다 :)
'앱 만들기 > 안드로이드 study' 카테고리의 다른 글
애드몹 광고가 나오지 않는다면... (4) | 2021.02.05 |
---|---|
액티비티 스택 - 플래그 - FLAG_ACTIVITY_CLEAR_TOP (2) | 2021.02.02 |
액티비티 스택 - 플래그 값이 없을때 (기본 설정) (1) | 2021.01.23 |
안드로이드 스튜디오 특수문자 입력하기 (4) | 2021.01.22 |
안드로이드 스튜디오 보라색 버튼 색상 변경하기 (6) | 2021.01.15 |
댓글