본문 바로가기

모바일/안드로이드

[Android] Step2 - 활동(Activity)

활동

Activity 클래스는 Android 앱의 중요한 구성요소로 활동이 실행되고 결합되는 방식은 플랫폼 애플리케이션 모델의 기본 요소. main() 메서드를 사용하여 앱을 실행하는 프로그래밍 패러다임과 달리 Android 시스템은 수명 주기의 특정 단계에 해당하는 특정 콜백 메서드를 호출하여 Activity 인스턴스의 코드를 시작

 

활동의 개념

모바일 앱 환경은 사용자와 앱의 상호작용이 항상 동일한 위치에서 시작되는 것이 아니라는 점에서 데스크톱 앱 환경과 다름. 한 앱이 다른 앱을 호출할 때 호출 앱은 다른 앱을 전체적으로 호출하는 것이 아니라 다른 앱의 활동을 호출

이런 방식으로 활동은 앱과 사용자의 상호작용을 위한 진입점 역할 -> Activity 클래스의 서브클래스로 구현

 

활동은 앱이 UI를 그리는 창을 제공하고 대부분의 앱은 여러 활동으로 구성

 

Manifest 구성

manifest에 활동 및 관련된 특정 속성을 선언해야 앱에서 활동을 사용 가능

manifest 파일을 열고 <activity> 요소를 <application> 요소의 하위 요소로 추가

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

 

인텐트 필터 선언

인텐트 필터는 명시적 요청뿐만 아니라 암시적 요청을 기반으로도 활동을 실행하는 기능을 제공

시스템 UI에서 사용자에게 작업을 실행할 때 어떤 앱을 사용할지 묻는 메시지가 표시되면 바로 인텐트 필터가 작동한 것

<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>

 

권한 선언

manifest의 <activity> 태그를 사용하여 특정 활동을 시작할 수 있는 앱을 제어 가능

상위, 하위 활동 모두 각 manifest에서 동일한 권한을 가지고 있지 않다면 상위 활동이 하위 활동을 실행 불가

상위 활동에서 <uses-permission> 요소를 선언할 때에는 각 하위 활동에 일치하는 <uses-permission> 요소가 있어야함

<manifest>
    <activity android:name="...."
    android:permission="com.google.socialapp.permission.SHARE_POST"
/>
<manifest>
	<uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
</manifest>

 

활동 수명 주기 관리

활동은 수명 주기 전체 기간에 걸쳐 여러 상태를 거침. 상태 간 전환을 처리하는 데 일련의 콜백 사용 가능

 

- onCreate()

시스템이 활동을 생성할 때 실행되는 이 콜백을 구현. 구현 시 활동의 필수 구성요소를 초기화

 

- onStart()

onCreate() 가 종료되면 활동은 '시작됨' 상태로 전환되고 활동이 사용자에게 표시

 

- onResume()

활동이 사용자와 상호작용을 시작하기 직전에 시스템은 이 콜백을 호출. 앱의 핵심 기능은 대부분 여기서 구현

 

- onPause()

활동이 포커스를 잃고 '일시중지됨' 상태로 전환될 때 시스템은 이 메소드 호출

사용자가 UI 업데이트를 기다리고 있다면 '일시중지됨' 상태의 활동은 계속 UI 업데이트 가능

ex) 사용자가 뒤로 또는 최근 버튼을 탭할 때 발생

 

- onStop()

활동이 사용자에게 더 이상 표시되지 않을 때 시스템은 onStop() 호출

시스템이 호출하는 다음 콜백은 활동이 사용자와 상호작용하기 위해 다시 시작되면 onRestart(), 활동 종료 시 onDestroy()

 

- onDestroy()

시스템은 활동이 제거되기 전 이 콜백 호출

onDestroy()는 일반적으로 활동 또는 활동이 포함된 프로세스가 제거될 때 활동의 모든 리소스를 해제하도록 구현

'모바일 > 안드로이드' 카테고리의 다른 글

[Android] Step1 - 안드로이드 소개  (0) 2021.06.22
[Android] BroadcastReceiver  (0) 2021.06.18
[Android] Permission  (0) 2021.06.18
[Android Studio] RecyclerView  (0) 2021.04.04
[Android Studio] SharedPreference  (0) 2021.04.04