Things take time

[Android] Activity를 스택에 쌓이지 않게 하는 방법 본문

Android(기능)

[Android] Activity를 스택에 쌓이지 않게 하는 방법

겸손할 겸 2018. 5. 8. 13:21

[로직]


안드로이드에서 startActivity를 호출하여 원하는 액티비티를 현재 액티비티의 위에 띄울 수 있다.


이렇게 되면 액티비티는 스택처럼, 먼저 호출된 액티비티가 밑에 위치하고 그 이후에 호출된 액티비티가 위에 가게 된다.

그래서 A->B를 호출했을 때, B에서 finish()를 호출하면 A 액티비티가 나타나게 된다.


그런데 A->B를 호출하고 A액티비티는 사라졌으면 한다면?


보통 인트로 화면을 만들때가 그 예다.


iOS에서는 기본 인트로 이미지를 사용하면, 일정시간 뒤에 지정한 뷰 컨트롤러로 이동하거나, 개발자가 특정 작업을 할 수 있도록 인트로 전용 스토리보드 + 클래스까지 제공하는 반면, 안드로이드는 그런것이 없기 때문에 직접 제작해야 한다.


가장 쉽게 생각할 수 있는 예제가


startAcivity(intent);

finish();


이 것이 아닐까.



[코드]

android:noHistory="true"

매니페스트 안에 액티비티 설정안에 적어두면 된다.

일단 저 startActivity()이후에 호출하는 finish()는 제대로 될 때가 있고, 안 될때가 있다. 먼저 새 액티비티를 띄우고 작업하기 때문에, 이 후 작업을 보장하지 못하는 듯 하다.


이 옵션은 해당 액티비티를 스택에 쌓이게 하겠냐는 것에 대한 boolean이므로 유용하게 사용할 수 있을 듯 하다.