안녕하세요. 개발중 궁금한게 있엇 글남겨봅니다.
A -> B -> C 이렇게 Activity가 이동하고 있습니다.
이동 구조는
A -> B 상태에서 back키를 누를경우 A로 돌아가야되면
A -> B -> C 로 갈경우에는 A, B가 동시에 종료되어야 합니다.
현재
public static ArrayList<Activity> at = new ArrayList<Activity>(); 를 만들고
A, B Activity 에서
Utility.at.add(this);
이런 방식으로 Activity 를 더해주고
C Activity로 갈 경우
startActivity(intent);
int ActivitystackNum = Utility.at.size();
for (int i = 0; i < ActivitystackNum; i++) {
Utility.at.get(i).finish();
}
위와 같이 finish() 를 해주게 했습니다.
그런데 이렇게 한뒤 테스트를 해보았을때, 종료가 정상적으로 되지 않습니다...ㅠㅠ
제가 뭘 잘못한것일까요? ㅠㅠ
아니면 특정 Activity를 종료해줄수 있는방법이 있는것인가요?
고수분들의 조언부탁드립니다.
해결책이 아닐수도 있지만, 위 상황처럼 A,B,C만 존재한다면 가능한 방법이 있긴 하겠네요
그냥 C 호출하실때
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
이거 설정하고 호출하시면 이전 스택에 액티비티가 모두 종료됩니다.
이거 단점이 기존 태스크를 사용하는게 아니고 다른 태스크를 띄우기때문에
경우에 따라서 액티비티 이동시에 좀 어색하게 이동할수도 있어요
저같은 경우는 startActivityForResult 로 결과값에 따른 Activity종료를 해주고 있습니다.
Back버튼기능을 오버라이드해서 Result값을 짒어넣는 방식으로요.
제가 볼땐 무리 없이 잘 되야 하는 소스 입니다.
CotrollActivity.class 를 따로 만드시고 싱글톤 타입으로 생성자를 바꾸시는게 좋을것 같고요
내부에 ArrayList<Activity> 로 list Queue 를 가지고 있는 형태에서
원하는 놈만 꺼내서 피니쉬 시키는 형태로 하면 완벽할것 같습니다.




각각의 액티비티가 안드로이트 액티비티 스택에 의존하지 않고 종료되도록 하는건 어떠세요?
A -> B 갈때 A 종료,
B에서 Back 시, A 호출