[안드로이드] 스택 ( Stack ) 제거

반응형



사용자가 태스크를 사용 중 일정시간 동안 벗어나 있게 되면
시스템은 루트 액티비티만 남기고 다른 모든 액티비티를 태스크에서 제거합니다.

읽기전에 손가락 한번 클릭~ >_<

고마워요 ~ Chu ~ ♥


이것은 어느정도의 시간이 지난 뒤에 , 사용자가 다시 그 태스크로 돌아왔을때엔 이전에 하던 작업 보다는 뭔가 새로운 작업을 하기 위해 돌아왔다고 생각하는 방식인데요,
이런 방식이 디폴트로 동작합니다.

따라서 , 이런 방식을 수정하기 위한 액티비티 속성이 존재합니다.




alwaysRetainTaskState 속성

루트 액비티비테 이 속성이 ture 면 디폴트 동작은 이루어지지 않고 오랜 시간 이후에도 스택 내의 모든 액티비티들이 유지되는 속성입니다.


clearTaskOnLaunch 속성

루트 액티비티에 이 속성이 true 면 사용자가 태스크를 떠났다가 되돌아 올때마다 스택의 루트 액티비티를 제외한 다른 모든 액티비티를 제거합니다.
즉, alwaysRetainTaskState 와는 정반대의 기능이라 할 수 있겠군요.


finishOnTaskLaunch 속성

이 속성이 true 면 사용자가 떠났다가 되돌아 와도 더이상 액티비티가 존재하지 않습니다.
즉, 루트 액티비티를 포함한 모든 액티비티를 제거하는 것이지요.




스택에서 액티비티를 제거하는 다른 방법으로는 인텐트 객체에 FLAG_ACTIVITY_CLEAR_TOP 플래그를 지정하면 됩니다.

이럴 경우 대상이 되는 태스크의 해당 인텐트 처리를 맡은 액티비티는 인텐트 처리를 위해 스택의 최상위로 가야하기 때문에 그 위의 모든 액티비티가 제거되는 효과를 가집니다.

대부분 FLAG_ACTIVITY_NEW_TASK 플래그와 함께 쓰이는데, 이렇게 되면 지정된 태스크 내의 액티비티는 인텐트에 응답할 수 있는 위치로 이동되겠지요.



관련글



반응형

댓글

Designed by JB FACTORY