안드로이드/면접질문

안드로이드 면접 질문 #3 액티비티

dev phoebe 2019. 4. 23. 22:16

https://github.com/MindorksOpenSource/android-interview-questions#core-android 해당 사이트를 바탕으로 작성하였습니다.


Activity?


액티비티는 일종의 어플리케이션 구성요소 로서, 사용자와 상호작용 할 수 있는 화면을 제공한다. 액티비티 마다 layout.xml 파일을 구현 함으로써 사용자에게 인터페이스를 제공 해 줄 수 있다.

액티비티를 사용하기 위해서는 아래와 같은 내용들을 알아야 한다.

  • setContentView()를 이용하여 액티비티의 View를 Draw

  • AndroidManifest 파일에 Activity를 등록

  • 라이프 사이클 콜백 처리

    • onCreate, onStart, onResume, onPause, onDestroy

  • 액티비티 시작시에 정보를 전달하거나 액티비티가 종료될 때 결과를 리턴할 수 있다.


액티비티의 3가지 상태?


  • 활성화 (Active) 또는 실행 중 (Running) 상태

    • Activity가 전면에 나와서 실행되고 있을 때

    • 현재 Task에 대한 Activity Stack의 최상위에 존재하고 있을 때

    • 이 상태의 Activity는 사용자와 상호작용 할 수 있다.

  • 멈춤(pauese) 상태

    • 사용자의 포커스를 가지고 있지 않지만 여전히 화면지 보여지고 있을 때

    • 다른 액티비티가 위에 위치 하지만 그 액티비티가 투명상태 혹은 전체화면을 채우지 못해 아직은 이전 액티비티가 보이는 상태 이 때 이전 액티비티의 상태는 멈춤 상태이다.

    • 극도로 메모리가 부족한 상태에서는 시스템에 의해 강제로 종료될 수 있다.

  • 정지(Stopped) 상태

    • 다른 Activity에 의해서 완전히 가려져, 더 이상 사용자에게 보여지지 않을 때


액티비티 라이프 사이클?


  • onCreate()

    • 액티비티가 최초 생성될 때 한번만 호출

    • 액티비티의 대부분 초기설정을 이곳에서 수행

    • 액티비티가 재성생되는 경우 이전상태값을 저장한 번들 객체가 전달

      • Bundle savedInstanceState
  • onStart()

    • 액티비티가 사용자에게 보이기 직전 호출

  • onResume()

    • 액티비티가 사용자와 상호작용을 하기 직전 호출

  • onPause

    • 다른 액티비티의 호출로 해당 액티비티가 백그라운드로 진입할때 호출

    • CPU를 소모하는 작업들을 중단 시킬 때 이곳에서 수행하면 적절

    • 이 메소드가 리턴 되기전까지는 다음 액티비티의 실행이 이루어지지 않음 > 되도록 빨리 끝내야함

  • onStop

    • 액티비티가 더 이상 화면에 나오지 않음

  • onDestroy

    • 액티비티가 소멸되기 전에 호출

    • 개발자가 finish()메소드를 호출 했을 때 혹은 시스템이 메모리를 확보하기 위해 액티비티를 일시적으로 종료 할 때 호출.

    • 위의 두가지 시나리오는 isFinishing()메소드를 통해 구분가능

  • onRestart

    • 액티비티가 중단 되었다가 다시 시작되기 직전에 호출

    • 이 뒤에는 항상 onStart()가 호출

  • 액티비티 재시작 경우

    • onPause() 상태까지 호출 뒤 재시작 된 경우

      • onPause() > onResume()

    • onStop() 상태까지 호출 뒤 재시작 된 경우

      • onStop() > onRestart() > onStart() > onResume()

  • 참고


launch modes?


launch mode의 종류는 총 4가지가 있다.

  • standard(default)

    • 인텐트를 할 때마다 Activity를 새로 생성한다.

  • singleTop

    • 인텐트를 할때마다 Activity를 새로 생성하나, 동일한 Activity가 해당 태스크의 top에 있을 경우 새로 생성하지 않고 기존에 있던 Activity를 호출 한다.

    • 생명 주기는 onPause() > onNewIntent() > onResume

  • singleTask

    • 하나의 Activity만 생성이 되나, 다른 Activity가 해당 태스크의 일부가 되는 것을 허용한다.

  • singleInstance

    • 이 옵션도 singleTask와 비슷하나 그 어떤 Activity와도 섞이지 않고 유일한 Activity로 동작

    • task안에 activity가 하나만 존재