본문 바로가기
Android/Components

[안드로이드] App Components - Activity

by SungJe 2021. 1. 17.

Activity란?

우선 안드로이드 개발자 사이트에서 Activity는 다음과 같이 설명하고 있다.

An activity is the entry point for interacting with the user. It represents a single screen with a user interface.
Link: Google Developer

즉, Activity는 사용자와 상호작용을 하기 위한 진입점으로 사용자 인터페이스를 포함하는 하나의 화면이다.

Activity Lifecycle

  • onCreate(): 시스템이 Activity를 생성할 때 실행되는 콜백 메소드, 필수적으로 구현해야하며 전체 수명 주기 동안에 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행한다. 콜백이 완료되면 Started 상태로 전이한다.

  • onStart(): 앱 사용자에게 Activity가 표시될 때 실행되는 콜백 메소드, 매우 빠르게 완료되며 콜백이 완료되면 Resumed 상태로 전이한다.

  • onResume(): 해당 Activity가 포커스를 얻었을 때 실행되는 콜백 메소드, 앱에서 포커스가 떠날 때까지 이 상태에 머무른다. 일시중지된 Activity가 재개될 때 다시 한번 호출된다.

  • onPause(): Activity가 포커스를 잃고 일시 중지됬을 때 실행되는 콜백 메소드, 아주 잠깐 실행되므로 사용자 데이터의 저장, 네트워크 호출, 데이터베이스 트랜잭션을 실행해서는 안된다.

  • onStop(): Activity가 더 이상 표시되지 않을 때 실행되는 콜백 메소드, 사용자에게 보이지 않는 동안 리소스를 해제하거나 CPU를 비교적 많이 소모하는 종료 작업 등을 실행한다.

  • onDestroy(): Activity가 소멸될 때 실행되는 콜백 메소드, 이전 콜백에서 아직 해제되지 않은 모든 리소스를 해제해야 한다.

Activity Lifecycle

Manifest 환경 설정

manifest에 Activity 및 관련 속성을 선언해야 앱에서 Activity를 사용할 수 있다.

Activity 선언

프로젝트에서 AndroidManifest.xml 파일을 열고 <application>의 하위 요소로 <activity>를 추가해야 한다.

<activity>의 유일한 필수 요소는 android:name이다. 그 외의 속성에 관한 자세한 내용은 개발자 가이드에서 확인 할 수 있다.

    <manifest ... >
      <application ... >
          <activity android:name=".ExampleActivity" />
          ...
      </application ... >
      ...
    </manifest >

Intent filter 선언

해당 Activity가 응답할 수 있는 인텐트의 유형을 지정할 수 있다. <activity> 요소에 intent-filter> 속성을 선언해야 한다.
<intent-filter>의 정의에는 필수 요소의 <action>과 선택적 요소의 <category>와 <data>가 있다.

자세한 내용은 나중에 다루도록 한다.

    <!-- 텍스트 데이터를 보낸다. -->
    <activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>
    </activity>

Permissions 선언

앱 또는 해당 Activity에서 필요로 하는 권한을 지정한다. <activity>에 android:permission 요소를 사용하거나 상위 Activity에 <uses-permission> 요소를 사용하여 권한을 선언할 수 있다.

상위 Activity와 하위 Activity가 동일한 권한을 가지고 있지 않으면 Activity를 실행할 수 없다.

    <!-- 하위 Activity에서 권한 선언 -->
    <manifest>
    <activity android:name="...."
       android:permission=”com.google.socialapp.permission.SHARE_POST”

    />

    <!-- 상위 Activity에서 권한 선언 -->
    <manifest>
       <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
    </manifest>   

참고 사이트