(자마린.안드로이드, 액티비티)Xamarin.Android Activity란?
Xamarin.Android Activity란?
n 사용자에게 UI를 제공하는 메인이 되는 컴포넌트로, 사용자의 상호 작용에 응답하고 동적 인 사용자 환경을 만드는 일을 담당한다.모바일 앱의 특성상 하나의 UI가 떠서 사용자로 부터 입력을 받고, 출력을 담당한다. 즉 하나의 화면 인터페이스에 해당한다고 보면된다. 폰 다이얼러 화면, 카메라 촬영 화면, 이메일 쓰기 화면, 지도 보기 화면 등과 같이 사용자들이 뭔가 하기 위해 상호작용을 할 수 있는 화면을 제공한다는 것이다. 각 액티비티는 하나의 윈도우에 UI를 그리며, 그 윈도우가 보통은 화면을 꽉 채우지만, 화면보다 작을수도 있고, 다른 윈도우의 위에 떠 있을 수도 있다.
n 앞 예제에서 하나의 화면(액티비티)만 있는데 화면을 시작시키는 클래스는 MainActivity 이며MainActivity.cs 파일에 있다. MainActivity라는 이름은 안드로이드에서 특별한 의미가 없는데,비록 MainActivity라는 어플리케이션에서 첫 번째 Activity의 이름을 짓는 것이 관습이지만 안드로이드는 다른 이름이 붙여도 상관 없다.
n MainActivity.cs를 열면 MainActivity 클래스가 Activity 클래스의 하위 클래스이고 Activity가 Activity 특성(Attribue)으로 되어 있음을 알 수 있다.
n 앱은 보통 여러개의 액티비티로 이루어져 있고, 각 액티비티는 서로 느슨한 관계를 갖는다. 일반적인 앱은 하나의 메인(main) 액티비티를 갖고 사용자가 앱을 처음 실행했을때 보여지는 화면(액티비티)이 되고 각 액티비티는 다른 액티비티를 호출할 수 있는데 다른 액티비티가 실행되면 이전의 액티비티는 정지되지만(stopped), "백스택(Backstack)"이라 불리는 스택에 저장되기 때문에 없어지지는 않는다.
n 안드로이드 시스템은 새로운 액티비티를 시작하면 백스택에 담고 나서 사용자에게 보여주는데 백스택은 스택 자료구조 이므로 LIFO의 스택 메커니즘을 따르며 사용자가 “뒤로” 버튼을 누를 경우 스택의 최상위(top)에 있는 현재 액티비티를 제거(pop and destroy)하고 이전의 액티비티를 시작 한다.
n Activity Class는 UI를 작동시키는 코드가 있는데 사용자의 상호작용에 응답하고 동적으로 응답이 처리되는 구조를 가진다.
n 이전의 Hello Android는 하나의 스크린(Activity)만 가지고 MainActivity 클래스가 그일을 하며 MainActivity.cs로 존재했다. MainActivity는 Activity를 상속받아 구현하고 클래스 위에는 Activity Attrubute로 필요한 속성을 정의한다.
n Activity Attribue는 Android Manifest와 함께 액티비티를 등록하고 안드로이드에게 이 클래스가 Manifest에 의해 관리되는 응용프로그램의 일부라고 알리는 역할을 한다. Label 속성은 스크린의 맨위에 표시되는 텍스트를 가리키고 Icon은 텍스트 옆에 표시되는 이미지를 말한다. MainLauncher 속성은 안드로이드에게 응용프로그램이 시작할 때 이 액티비티를 표시하도록 지정하므로 액티비티가 여러 개일 때 유용하다.
Activity Life Cycle
n Xamarin.Android 애플리케이션에는 main과 같은 단일 진입 점이 없다. 즉, 운영 체제가 응용 프로그램을 시작하기 위해 호출하는 응용 프로그램의 코드 줄이 하나도 없다는 말이다. 대신, 안드로이드가 클래스 중 하나를 인스턴스화 할 때 애플리케이션이 시작된다. 이때 안드로이드는 전체 애플리케이션의 프로세스를 메모리 로딩한다.
n 에뮬레이터 또는 장치에서 전화걸기앱 응용 프로그램을 처음 실행하면 운영 체제가 첫 번째 Activity를 만들고 이 액티비티는 하나의 애플리케이션 화면에 해당하는 특수한 Android 클래스이며, 사용자 인터페이스 그리기 및 전원 공급을 담당한다. Android는 애플리케이션의 첫 번째 Activity를 생성 할 때 전체 애플리케이션을 로드한다.
n 전화걸기앱 예제에서는 애플리케이션을 구성하는 모든 부분이 Android Manifest라는 특수 XML 파일에 등록된다. Android Manifest의 역할은 애플리케이션의 콘텐츠, 속성 및 권한을 추적하고이를 Android 운영체제에 공개하는 것인데 아래 그림과 같이 Android Manifest 파일로 묶인 하나의 Activity(화면)와 리소스 및 도우미 파일의 모음으로 생각할 수 있다.
n 새로운 액티비티가 실행되어 현재 액티비티가 정지하게 되면 시스템은 생명주기의 콜백 메소드를 호출함으로써 액티비티의 상태가 변경되었음을 알려주는데 이러한 콜백 메소드들은 시스템이 액티비티를 생성하고, 보여주고, 멈추고, 제거하는 등의 상황에 호출되며, 적절히 오버라이드(override)함으로써 각각의 상황에 맞는 동작을 구현할 수 있다. 예를 들어 액티비티는 정지되었을 때 네트웍이나 데이터베이스 관련 객체와 같이 덩치가 큰 객체들을 해제하는 것이 좋고 액티비티가 다시 화면에 보여질 때 필요한 리소스들을 다시 가져와서 중지되었던 작업들을 다시 실행할 수 있다. 이렇게 액티비티가 생성되고 보여지고 멈추고 제거되고 하는 등의 상태변화는 모두 액티비티 생명주기의 일부다.
n Android에서는 액티비티들은 사용자와 상호작용에 의존하는 라이프사이클의 다른 단계를 통하여 작동된다. 액티비티들은 생성(OnCreate), 시작(OnStart), 일시정지(OnPause), 재실행(OnResume), 파괴(OnDestroy)의 라이프 사이클을 가지며 화면 라이프 사이클의 특정 지점에서 시스템이 호출하는 콜백 메소드가 들어 있다.
n Activity가 상태를 변경하면 적절한 라이프 사이클 이벤트 메소드가 호출되어 변경을 알리고 해당 변경 사항에 적응하기 위해 코드를 실행할 수 있다.
n 즉 액티비티 라이프 사이클 메소드를 재정 의하여 Activity가 로드되는 방식, 사용자가 반응하는 방식, 장치 화면에서 사라지는 상황까지 제어 할 수 있다.
액티비티 클래스는 스크린 라이프사이클에서 어떤 지점에 시스템이 호출하는 메소드들이 포함된다.
#자마린액티비티, #안드로이드, #액티비티, #자마린, #자마린교육, #자마린강좌, #Xamarin, #Xamarin교육, #자마린강의, #XamarinForms
댓글 없음:
댓글 쓰기