Activity를 그냥 intent생성해서 만들면 계속해서 새로 Activity를 start하고 스택으로 쌓이는 문제가 발생한다.
예를 들어서 A, B, C Activity를 A->B->C->A->C->B로 이동하고 뒤로가기를 누르면 다시 화면이 B->C->A->C->B->A 순으로 왔던 순서 반대로 나타난다. 그래서 뜨면 안될 화면도 뜨게 된다. (*회원가입 화면이 그대로 다시뜬다던가 삭제한 화면이 뜬다던가 등) 혹은 그냥 다시 뒤로가면 되는 화면인데 새로운 화면을 만들어서 그 위에 쌓아나간다.
여기서 생기는 두가지 문제,
1. 접근해선 안되는 이전화면으로 돌아가버린다.
2. 굳이 이전 화면의 Activity를 새로 생성해서 위에 쌓는다.
를 해결해보자.
1. 접근해선 안되는 이전화면으로 돌아가버리는 문제
->해당 Activity 의 JAVA 소스 파일에서 intent를 생성한 바로 다음에
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
를 추가해준다.
여기서 FLAG_ACTIIVTY_CLEAR_TASK는 기존에 쌓여있던 task(stack이 모여 형성하는 작업의 단위(?))를 모두 삭제하는 조건(?)을 받는 flag 상수다. Intent 클래스에 statitc final로 선언되어있다.
즉 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 는 기존에 쌓여있던 스택을 모두 없앤다.
이때 FLAG_ACTIVITY_NEW_TASK로 task를 새로 생성한다. 이때 root activity는 intent가 새로 생성한 activity가 된다.
2. 이전 화면의 Activity로 돌아가야하는 문제
-> 돌아가기 이전 Activity의 JAVA 소스 파일에서 intent를 생성한뒤에
intent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);
을 추가해준다.
FLAG_ACTIVITY_CLEAR_TOP 은 이전 Activity를 새로운 Activity로 지정하고 현재 Activity는 Clear하는 flag상수다. 역시 Intent 클래스에 static final로 선언되어 있다.
따라서, 현재 Activity를 없애고 이전 화면을 새로운 화면으로 지정하기 때문에 자연스럽게 이전화면으로 돌아간다.
** 2.번 문제는 Manifest파일에 android:launchmode="singleTop"을 추가해 주면 비슷하게 문제를 해결할 수 있다.
자세한건
http://developer.android.com/guide/components/tasks-and-back-stack.html
(tasks and back stack에 대한 android document)
참조.
Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 안드로이드
- javascript
- 폼메일
- PHP
- dovecot
- mysql
- chart.js
- roundcube
- curl
- UML
- 설치
- 자바스크립트
- not working
- C# IO
- android 효과음
- xe
- 안드로이드 gcm
- WebView
- 안드로이드 푸시
- 우분투
- Android
- 안드로이드 푸쉬
- C#
- Mail Server
- soundpool
- 자동 생성
- php 시큐어코딩
- php 취약점
- html5
- FCM
Archives
- Today
- Total
그러냐
간단하게 Activity stack 처리하는 방법 (Android) 본문
반응형
간단하게 Activity stack 처리하는 방법 (Android)
출처 : http://mokiprogramming.blogspot.com/2014/01/activity-stack.html
반응형
'android' 카테고리의 다른 글
webview html 파일 열기 (0) | 2018.11.28 |
---|---|
안드로이드 websocket 연결 상태 확인 방법 / 연결 지속 방법 (2) | 2018.11.22 |
리스트뷰 더 보기 기능 스크롤 하단 (0) | 2018.11.19 |
RecyclerView 의 최상단과 최하단 스크롤 이벤트 감지하기 (0) | 2018.11.19 |
Android Socket.io 라이브러리를 사용해보자. (0) | 2018.11.12 |