로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
심화

안드로이드 앱 프로그래밍

임시 이미지 정재곤
http://www.boostcourse.org/mo316/notice/2577
좋아요 1436 수강생 20099
아래의 글은 BOOSTER 서포터즈로 활동했던 쭈(jy***)님이
작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/jy364/221806836990
2)작성날짜: 20/02/13
<본문작성>

안녕하세요.

오늘은 3. 화면 여러 개 만들기 수강 후기를 올리려고 합니다.

1. 화면 전환하기

2. 인텐트 살펴보기

3. 수명주기 이해하기

4. 서비스 사용하기

5. 브로드캐스트 수신자 사용하기

이렇게 구성되어 있습니다.

그중에서 오늘은 1,2에 대한 수강후기를 올리고

다음 시간에 3,4,5에 대한 수강 후기를 올리려고 합니다!

그럼 시작해볼까요?


애플리케이션의 구성요소 4가지는

액티비티(Activity)

서비스(Service)

브로드캐스트 리시버(Broadcast Receiver)

컨텐트 프로바이더(Content Provider)

입니다.

하나씩 살펴보면

액티비티 : 사용자 인터페이스 화면을 가지는 하나의 작업

서비스 : 백그라운드에서 실행되는 컴포넌트로서 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업

브로드캐스트 리시버 : 방송을 받고 반응하는 컴포넌트

컨텐트 프로바이더 : 데이터를 관리하고 다른 애플리케이션에게 제공하는 컴포넌트

그럼 이제 액티비티 실행하는 방법에 대해 알아볼까요?

액티비티를 시작할 때는

startActivity나

startActivityForResult

메소드를 사용할 수 있습니다.

startActivityForResult 메소드startActivity메소드와 다르게

액티비티가 종료된 후에 결과를 반환받을 수 있는 메소드 입니다.

Intent intent = new Intent(getApplicationContext(), MenuActivity.class); startActivityForResult(intent, 101);

다음 코드와 같이 intent 객체를 만든 후에 startActivityForResult 메소드를 사용하여 액티비티를 시작합니다.

이때 메소드의 매개변수로 인텐트 객체를 넘겨주어야 합니다!!

액티비티 전환

또한, 다음 그림에서 볼 수 있는 것처럼

직접 다른 액티비티의 메소드를 호출하여 실행하는 것이 아니라

시스템을 통해서 실행됩니다.

새로운 액티비티를 실행한 후에 다시 원래 액티비티로 돌아가고 싶다면

finish메소드를 사용하여 이전 액티비티로 돌아갈 수 있습니다.

그 이유는 안드로이드에서 액티비티가 관리되는 형태를 보면 알 수 있습니다.

액티비티

액티비티는 스택(Stack) 형태로 관리됩니다.

순서는 액티비티가 열린 순서와 같습니다.

새로운 액티비티를 사용하게 되면 이전 액티비티는 스택에 쌓이게 됩니다.

따라서, 이전 액티비티로 돌아가고 싶을 때는

새로운 액티비티를 종료시키면

스택에 있는 이전 액티비티를 다시 실행시킬 수 있는 것입니다!

액티비티는 안드로이드 프로그래밍을 할 때 굉장히 중요한 개념입니다!!

혹시 액티비티에 관해 더 궁금한 점이 있으시다면

안드로이드 개발자 공식 홈페이지를 참고하시면 좋을 것 같습니다.

https://developer.android.com/guide/components/activities.html?hl=ko

활동  |  Android 개발자  |  Android Developers

Android 개발자 활동 활동은 Android 플랫폼에서 앱을 구성하는 기본 요소 중 하나입니다. 활동은 사용자가 앱과 상호작용하기 위한 진입점 역할을 하며 사용자가 앱 내에서(뒤로 버튼으로) 탐색하거나 앱 간에(최근 버튼으로) 이동하는 방법의 중심이기도 합니다. 활동을 능숙하게 관리하면 다음과 같은 사항이 보장됩니다. 사용자 환경에 지장을 주지 않으면서 방향 변경이 원활하게 이루어집니다. 활동 전환 과정에서 사용자 데이터가 손실되지 않습니다. 시스템이 적절한 때에 정상적으로 프로세스를 종료합니다. 이 섹션은 활동의 개념을...

developer.android.com

그러면 이제 인텐트(intent)에 대해 알아볼까요?

방금 전 액티비티를 설명할 때도 인텐트가 잠깐 나왔었습니다.

인텐트(intent)란?

시스템으로 전달되는 일종의 명령을 담고 있는 객체입니다.

인텐트 안에 들어가는 정보 중에서 가장 중요한 것은 액션 정보입니다.

예를 들어, 전화걸기 시스템을 만들다고 하면

ACTION_VIEW나 ACTION_DIAL 액션을 넣어줄 수 있습니다.

전화걸기를 원하는 인텐트는 다음과 같이 사용됩니다.

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:01010001000")); startActivity(intent);

인텐트 객체를 만들 때

매개변수 안에 ACTION_DIAL을 넣어주고

Uri.parse()에다가 전화번호를 넣어주면 됩니다.

그리고 startAcitivity로 액티비티를 시작하면

인텐트 정보에 담긴 전화번호로 전화걸기 화면이 실행됩니다.

새로운 액티비티를 실행시킬 때

이미 동일한 액티비티가 실행되고 있는데

그 위에 액티비티를 실행하게 되는 경우가 있습니다.

이때, 플래그를 사용하면

동일한 액티비티인 경우 이미 화면에 보이는 액티비티를 그대로 사용할 수 있도록 해줍니다.

플래그

그림을 살펴보면

플래그를 사용하지 않았을 때는 액티비티 #2가 스택에 두 번 쌓이지만,

플래그를 사용하면 액티비티 #2가 한 번만 쌓이는 것을 볼 수 있습니다.

플래그를 사용할 때는 액티비티가 새로 만들어지는 것이 아니고 재사용하기 때문에

onCreate()가 아닌 onNewIntent()를 사용합니다.


지금까지 액티비티와 인텐트에 대해 알아봤습니다.

두 개념은 안드로이드 프로그래밍을 할 때 굉장히 많이 쓰이고 중요한 개념입니다.

꼭 익혀두시길 바랍니다.

그럼 저는 3. 화면 여러 개 만들기(2)로 다시 찾아오겠습니다!!

안녕 :-)

 

*********************************************