액티비티는 간단히 한 화면을 나타내는 객체라고 생각 하면 된다.

그러나 하나의 액티비티가 항상 한 화면을 구성하진 않는다.

하나의 화면에 2개 이상의 액티비티로 구성될 수도 있다.

 

화면간의 전환 즉, 액티비티 간의 전환은 인텐트 라는 것을 통해 이루어 진다.

안드로이드 에서는 자바에서 처럼 한 화면에서 다음 화면을 바로 호출 할 수 없다.

액티비티a -> 인텐트(해석) -> 액티비티b

액티비티 간에 데이터를 주고 받는 경우에도 인텐트를 통해 이루어 진다.

StartActivityforResult() / SetResult()

 

ㅇ Explicit Intent: 호출할 대상이 확실

예) Intent myIntent = new Intent(getApplicationContext(), NewActivity.class)

ㅇ Implicit Intent: 호출할 대상이 명확하지 않고 가변적

예) 웹브라우저에 uri를 호출할 경우, 웹브라우저가 2개 이상 설치된 경우 어디를 호출?

 

대상 인텐트 객체를 지정할때 ComponentName 으로도 가능하다.

 

액티비티 스택과 플래그

액티비티는 스택구조로 관리됨, 동일한 액티비티를 여러 번 실행 한다면 동시에 데이터를 여러 번 접근 하거나 리소스를 여러번 사용하는 문제 발생 가능 -> 플래그

ㅇ FLAG_ACTIVITY_SINGLE_TOP

액티비티를 생성할 때 이미 생성된 동일한 액티비티가 있으면 그 액티비티를 그대로 사용하라는 의미

동일한 액티비티를 중복 생성 못함

ㅇ FLAG_ACTIVITY_NO_HISTORY

처음 이후에 실행된 액티비티는 액티비티 스택에 추가되지 않음

ㅇ FLAG_ACTIVITY_CLEAR_TOP

이 액티비티 위에 있는 다른 액티비티를 모두 종료

by wisegirl 2013. 2. 17. 22:51