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가 소멸될 때 실행되는 콜백 메소드, 이전 콜백에서 아직 해제되지 않은 모든 리소스를 해제해야 한다.
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>
참고 사이트
'Android > Components' 카테고리의 다른 글
[안드로이드] App Components - Content Provider (0) | 2021.06.08 |
---|---|
[안드로이드] App Components - Broadcast Receiver (0) | 2021.06.04 |
[안드로이드] App Components - Service (0) | 2021.05.27 |