intent.addFlags로 자주 쓰는 상수 세트
728x90
반응형

참고 : http://mokiprogramming.blogspot.com/2014/01/activity-stack.html

 

 

가장 많이 사용하는 flag 상수는 아래와 같다.

 

1
2
3
intent.addFlags(
  Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK
);
cs

 

(아래 내용은 실제와 다를 수 있다. 

내가 제주껏 이해한 내용이니 만약 틀리면 신나게 지적질 바랍니다_급공손모드)

 

 

만약 내가 이동한 액티비티 경로가 다음과 같다고 하자.

 

A --> B --> C --> D --> B --> C

위 상황에서 back 버튼을 누른다면 어떻게 될까?

  • FLAG_ACTIVITY_CLEAR_TASK
    • A --> B(old) --> C --> D --> B(new)
    • 마지막 B로 이동할 때 A, B, C, D 모두 제거된다.
    • 그래고 새로운 B가 호출된다
  • FLAG_ACTIVITY_SINGLE_TOP
    • 위 상황에서 B의 상태를 B(new)가 아닌 B(old)로 유지하고 싶다면 이 플래그를 사용한다.
    • 태스크 상황은 아래와 같다.
    • A(?) --> B(old) (A는 old로 추정. 확실하지 않으니 알게되면 피드백 부탁합니다.)
    • 만약 FLAG_ACTIVITY_CLEAR_TASK를 쓰지 않았다면 재사용 없이 B(new)가 호출된다.
  • FLAG_ACTIVITY_NEW_TASK
    • affinity의 영향을 받는다. affinity, task, flag에 대해서는 링크 참조
  • 최종 task는 다음과 같다
    • A(?) --> B(old) --> C(new)
    • back을 하게 되면 A(?) --> B(old)

 

728x90
반응형