Activity

WangyuKim·2021년 9월 14일
0

Activity(활동)이란

  • 플랫폼 애플리케이션은 활동이 실행되고, 결합되는 방식으로 동작한다.

  • main()메서드를 사용하여 앱을 실행하는 프로그래밍 패러다임과 달리 Android시스템은 수명주기의 특정 단계에 해당하는 '콜백 메서드'를 호출하여 Activity인스턴스의 코드를 시작한다.

  • 때문에, 사용자와 앱의 상호작용이 항상 동일한 위치에서 시작하지 않는다.(데스크톱 앱 환경과의 차이) = 비결정론적 사용자 경험

  • 한 앱이 다른 앱을 호출할 때 호출앱은 다른 앱의 전체를 호출하는 것이 아니라 다른 앱의 '활동을 호출'한다.

  • 이런 방식으로, 활동은 앱과 사용자의 상호작용을 위한 진입점 역할을 한다.

  • 활동은 Activity클래스의 서브클래스로 구현된다.

  • 일반적으로 하나의 활동은 하나의 화면을 구현한다. 하나의 활동이 기본 활동으로 지정되며, 이것이 앱 실행때 표시되는 첫번째 화면이다.

  • 기본 활동은 다양한 작업을 수행하는 다른 활동들을 실행할 수 있다.

  • 각 활동은 일관된 사용자 환경을 형성하기 위해 함께 작동하지만, 서로간에는 최소한의 종속성만 있다.

  • 앱의 활동을 사용하려면 앱의 manifest에 활동 관련 정보를 등록하고, 활동 수명주기를 적절히 관리해야 한다.

    manifest 구성

  • 활동을 선언하기 위해, 요소(이름, 라벨, 아이콘, UI테마 등)를 요소의 하위 요소로 추가해야 한다.

  • 앱을 게시한 후에는 activity이름을 변경하면 안된다.

  • 인텐트 필터는 Android플랫폼의 매우 강력한 기능이다.

  • 앱간의 활동 호출을 가능하게 한다.

  • 인텐트 필터는 명시적 요청, 암시적 요청이 가능하다.

    • 명시적 요청: 'Gmail앱에서 이메일 보내기 활동 시작'
    • 암시적 요청: '작업을 활수 있는 활동으로, 이메일 보내기 화면을 시작'
  • 인텐트 필터의 요소: action(행위), category(응답 수신), data(데이터 유형)

    세팅

    호출

  • 다른 앱에서 사용하지 못하게 하려면 인텐트 필터가 없어야 한다.

    수명주기

  • 활동은 수명주기 전체 기간에 걸쳐 여러 상태를 거친다.

  • 상태간 전환을 처리하는데 일련의 콜백을 사용할 수 있다.

  • onCreate();

    • 필수로 구현되어야 하는 콜백이다.
    • 구현시 활동의 필수 구성요소(뷰 생성, 데이터를 목록에 결합)를 초기화해야 한다.
    • setContentView()를 호출하여 레이아웃을 정의해야한다.(가장 중요한 작업!!)
    • 다음 콜백은 항상 onStart()이다.
  • onStart()

    • 기본 activity(활동)가 사용자에게 표시된다.
    • 이 콜백에는 활동이 포그라운드로 나와서 대화형이 되기 위한 최종 준비에 준하는 작업이 포함된다.
  • onResume()

    • 활동이 사용자와 상호작용을 시작하기 직전에, 시스템은 이 콜백을 호출한다.
    • 이 콜백이 실행되는 활동은 모든 활동들 중 맨 위 스택에 위치하며, 모든 사용자 입력을 캡처한다.
    • 앱의 핵심 기능은 대부분 onResume() 메서드로 구현된다.
    • onPause() 콜백은 항상 onResume() 뒤에 온다.
  • onPause()

    • 활동이 포커스를 잃고 '일시중지' 상태로 전환될 때, 시스템은 이 콜백을 호출한다.
    • 예를 들어, 뒤로가기 또는 최근 버튼을 탭할 때 처럼, onPause()가 호출될 때는 부분적으로 활동이 표시되면서도, 사용자가 활동을 떠나고 있으며, 활동이 조만간 '중지됨', '다시 시작됨' 상태로 전환됨을 나타낸다.
    • 네비게이션과 같이, 사용자가 UI업데이트를 기다리고 있다면, '일시중지됨' 상태의 활동은 포커스를 잃더라도 계속 UI를 업데이트할 수 있다.
    • 데이터 저장, 네트워크 호출, DB트랜잭션 실행 시 이 콜백을 사용해서는 안된다.
    • 다음 콜백은 onStop() 또는 onResume()이다.
  • onStop()

    • 활동이 사용자에게 더이상 표시되지 않을 때 호출됨
    • onRestart() 또는 onDestroy()가 다음 콜백으로 호출됨
  • onRestart()

    • onStop()된 활동이 다시 시작되려고 할 때 시스템이 이 콜백을 호출한다.
    • onStop()된 시간부터의 활동상태를 복원한다.
  • onDestroy()

    • 활동이 제거되기 전에 시스템이 이 콜백을 호출한다.
    • 활동이 수신하는 마지막 콜백이다.
    • 활동 또는 활동이 포함된 프로세스가 제거될 때, 활동의 모든 리소스를 해제하도록 구현된다.

0개의 댓글