본문 바로가기
X

앱 개발 방법 - 액티비티(Activity) (권한 선언, (액티비티 수명 주기 관리 [onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy()])

by green post it 2022. 1. 16.
반응형

앱 개발,앱 개발 강좌, 어플 개발, 어플 제작

권한 선언

manifest의 <activity>태그를 사용하여 특정 액티비티를 시작할 수 있는 앱을 제어할 수 있습니다. 상위 액티비티와 하위 액티비티 모두 각 manifest에서 동일한 권한을 가지고 있지 않다면 상위 액티비티가 하위 액티비티를 실행할 수 없습니다. 상위 액티비티에서 <uses-prmission>요소를 선언할 때에는 각 하위 활동에 일치하는 <uses-permission>요소가 있어야 합니다.

 

예를 들어 앱에서 SocialApp이라는 가상의 앱을 사용하여 소셜 미디어의 게시물을 공유하려면 다음과 같이 게시물을 호출하는 앱이 보유해야 하는 권한을 SocialApp 자체에서 정의해야 합니다.

    <manifest>
    <activity android:name="...."
       android:permission=”com.google.socialapp.permission.SHARE_POST”

    />

다음과 같이 앱의 권한이 SocialApp의 manifest에 설정되 권한과 일치해야 SocialApp을 호출 할 수 있습니다.

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

 

 

 

 

액티비티 수명 주기 관리

액티비티는 수명 주기 전체 기간에 걸쳐 여러 상태를 거칩니다. 상태간 전환을 처리하는 데 일련의 콜백을 사용할 수 있습니다. 다음 세션에서는 이러한 콜백을 소개합니다.

onCreate()

시스템이 액티비티를 생성할 때 실행되는 이 콜백을 구현해야 합니다. 구현 시 액티비티의 필수 구성요소를 초기화애야합니다. 예를 들어 앱은 여기에서 뷰를 생성하고 데이터를 목록에 결합해야 합니다. 이 콜백에서 setContentView()를 호출하여 액티비티의 사용자 인터페이스를 위한 레이아웃을 정의해야 하며 이 작업이 가장 중요합니다.

 

onCreate()가 완료되면 다음 콜백은 항상 onStart()입니다.

onStart()

onCreate()가 종료되면 액티비티는 '시작됨' 상태로 전환되고 액티비티가 사용자에게 표시됩니다. 이 콜백에는 액티비티가 포그라운드로 나와서 대화형이 되기 위한 최종 준비에 준하는 작업이 포함됩니다.

onResume()

액티비티는 사용자와 상호작용을 시작하기 직전에 시스템은 이 콜백을 호출합니다. 이 시점에서 액티비티는 액티비티 스택의 맨 위에 있으며 모든 사용자 입력을 캡처합니다. 앱의 핵심 기능은 대부분 onResume() 메서드로 구현합니다.

 

onPause() 콜백은 항상 onResume() 뒤에 옵니다.

onPause()

액티비티 포커스를 잃고 '일시중지됨' 상태로 전환될 때 시스템은 onPause()를 호출합니다. 예를 들어 이 상태는 사용자가 뒤로 또는 최근 버튼을 탭할 때 발생합니다. 시스템이 액티비티에서 onPause()를 호출할 때 이는 엄밀히 말하면 액티비티가 여전히 부분적으로 표시되지만 대체로 사용자가 액티비티을 떠나고 있으며 액티비티가 조만가 '중지됨' 또는 '다시 시작됨' 상태로 전환됨을 나타냄니다.

사용자가 UI 업데이트를 기다리고 있다면 '일시중지됨'상태의 액티비티는 계속 UI를 업데이트할 수 있습니다. 이러한 액티비티의 예에는 내비게이션 지도 화면 또는 미디어 플레이어 재생을 표시하는 액티비티가 포함됩니다. 이러한 액티비티는 포커스를 잃더라도 사용자는 UI가 계속 업데이트될 것으로 예상합니다.

 

애플리케이션 또는 사용자 데이터를 저장하거나 네트워트를 호출하거나 데이터베이스 트랜잭션을 실행하는에 onPause()를 사용해서는 안 됩니다.

onStop()

액티비티가 사용자에게 더 이상 표시되지 않을 때 시스템은 onStop()을 호출합니다. 이는 액티비티를 제거 중이거나 새 액티비티를 시작 중이거나 기존 액티비티를 '다시 시작됨'상태로 전환 중이고 중지된 액티비티를 다루고 있기 때문에 발생할 수 있습니다. 이 모든 상황에서 중지된 액티비티는 더 이상 표시되지 않습니다.

 

시스템이 호출하는 다음 콜백은 액티비티가 사용자와 상호작용하기 위해 다시 시작되면 onRestart()이며 이 액티비티가 완전히 종료되면 onDestroy()입니다.

onRestart()

'중지됨' 상태의 액티비티는 다시 시작되며고 할 때 시스템은 이 콜백을 호출합니다. onRestart()는 액티비티가 중지된 시간부터 액티비티 상태를 복원합니다.

onDestroy()

시스템은 활동이 제거되기 전에 이 콜백을 호출합니다.

이 콜백은 액티비티가 수신하는 마지막 콜백입니다. onDestroy()는 일반적으로 액티비티 또는 액티비티가 포함된 프로세스가 제거될 때 활동의 모든 리소스를 해제하도록 구현됩니다.

반응형