android - 작업 및 백 스택

*작업 및 백 스택
- 작업: 액티비티 컬렉션
- 새로운 액티비티를 시작하는 경우,
이전 액티비티는 스택에 유지되지만 중단되고 현재 상태 보존됨

-back버튼을 누르면, 현재 액티비티가 스택의 맨 위에서 팝(해당 액티비티 소멸)
-작업이란 단위로 사용자가 새 작업을 시작할 때 '백그라운드'로 이동할 수 있음
-작업의 모든 액티비티는 백그라운드에 있는 동안은 중단되고 작업이 전경으로 돌아오면 하던 일 계속 할 수 있음
-여러 개의 작업을 백그라운드에 한꺼번에 대기시킬 수 있지만, 사용자가 수많은 백그라운드 작업을 동시에 실행하면 시스템이 메모리를 복원하기 위해 백그라운드 액티비티를 소멸시킬 수 있음. 액티비티 상태 손실됨

*액티비티 상태 저장
상태가 손실될 경우를 대비하여 콜백 메서드 사용(onSaveInstanceState())

*작업 관리
<activity>매니페스트 요소 안에 있는 특성과 startActivity()에 전달한 인텐트의 플래그를 사용해 모든 작업 수행

*시작 모드 정의
-방법1: 매니페스트 파일 사용
#launchmode: 작업에 대해 액티비티가 시작되는 방법

##standard: 시스템이 액티비티가 시작된 작업에서 액티비티의 새 인스턴스를 만들고, 인텐트의 경로를 이것으로 지정. 액티비티는 여러 번 인스턴스화 할 수 있음. 각 인스턴스는 서로 다른 작업에 속하거나 한 작업에 여러 개의 인스턴스가 있을 수 있음

##singleTop: 액티비티의 인스턴스가 이미 현재 작업의 맨위에 존재하는 경우, 시스템은 새 액티비티 인스턴스를 만드는 대신 onNewIntent()메서드 호출해 인텐트를 해당 인스턴스로 라우팅(A-B-C-D-D 가 아닌 A-B-C-D로 유지)

##singleTask: 시스템이 새 작업을 만들고 새 작업의 루트에 있는 액티비티를 인스턴스화함. 하지만 액티비티의 인스턴스가 이미 별개의 작업에 존재하는 경우, 시스템은 인텐트의 경로를 기존 인스턴스로 지정(해당 인스턴스의 onNewIntent()메서드 호출). 한 번에 액티비티 인스턴스 한 개씩만 존재





댓글

이 블로그의 인기 게시물

포트란?

안드로이드 스마트폰 연결