스마트폰 어플리케이션 구조는 한개의 화면당 하나의 액티비티(Activity) 로 구성됩니다.
하나의 액티비티에는 하나의 화면 레이아웃이 존재하고 버튼, 라벨 등 화면에 어떻게 보여야 하는지에 대한 정보를 가지고 있습니다.
액티비티는 자신의 라이프사이클이 존재합니다. 생성되고 시작되고 중지되고 종료되고 폐기되는 순서로 가는데 중지되었을때 재기동하기도 하고 종료되었을때 다시시작하기도 합니다.
( onCreate(), onStart(), onStop(), onDestroy(), onResume(), onReStart() )
라이프사이클별로 화면처리시에 필요한 이벤트나 프로시져를 작성합니다.
다른 화면이 생성되면 즉 다른 액티비티가 호출되면 기존 액티비티는 중지되거나 종료된다. 이때 기존 액티비티의 상태정보는
저장되어 있다가( savedInstanceState 변수 ) 재기동, 재시작될때 그 정보를 가져와서 다시 보여줍니다.
다른 액티비티를 생성할때 필요한 컴포넌트가 인텐트(Intent) 이다. 메시지를 전달하는 도구라고 생각하면 될듯 합니다.
명시적 인덴트는 특정 액티비티를 호출할때 사용합니다.
암시적 인덴트는 필요한 기능을 정의하여 그 기준에 합당한 액티비티를 호출할때 사용합니다.
인덴트는 데이타를 액티비티간에서 받을수 있습니다.
( startActivityForResult() 함수 호출하고 onActivityResult() 함수에 받은 데이타 처리로직을 넣어주면 됩니다. )
액티비티에서 데이타를 저장하여 돌려줄수도 있습니다.
( 전달된 인덴트 getIntent() 에 키, 값형태로 putExtra(키,값) 함수를 사용하여 저장 됩니다.
그리고 setResult(RESULT_OK,intent) 로 마무리 하면 됩니다 )
스마트폰에서 취소버튼을 클릭하여 이전화면으로 이동하는 경우가 있습니다.
이때는 task 라는 액티비티 스택(Activity Stack) 이라고도 하는데 이 공간에 Root Activity 를 기준으로 해서
호출된 액티비티가 쌓이다가 취소 버튼을 클릭하면 이전 액티비티로 넘어가도록 되어 있습니다.
앱 어플리케이션을 작성순서
1. 프로젝트명 과 액티비티( Root Activity ) 이름, 패키지명( 보통 도메인 네임을 사용하여 유일성을 보장 )을 정합니다.
2. 필요한 화면을 구성합니다. 화면수 만큼 액티비티를 만들 필요가 있습니다.
3. 액티비티별로 화면 레이아웃을 XML파일로 작성합니다.
4. AndroidManifest.xml 파일에 작성된 액티비티 명을 등록해서 연결시켜 줍니다.
5. 각 액티비티의 라이프사이클 이벤트별로 필요한 기능을 작성하면 됩니다.