본문 바로가기

안드로이드 개발

안드로이드 - 앱에서 activity는 무엇일까?(초보자도 이해할 수 있게!)

앱에서 액티비티(activity)는 무엇일까요?

 

https://developer.android.com/guide/components/activities/intro-activities

 

활동 소개  |  Android 개발자  |  Android Developers

활동은 사용자가 전화 걸기, 사진 찍기, 이메일 보내기 또는 지도 보기와 같은 작업을 하기 위해 상호작용할 수 있는 화면을 제공하는 애플리케이션 구성요소입니다. 각 활동에는 사용자 인터페이스를 그릴 수 있는 창이 제공됩니다…

developer.android.com

안드로이드 개발자 사이트에 액티비티(activity)가 무엇인지 설명이 아주 자세히 되어 있습니다.

 

그런데 우리 초보들은 저 사이트 봐도 아무리 이해가 안되죠?

 

그리고 구글에 액티비티 뭐냐고 검색해 보면 상속이니 생명 주기(life cycle)이니 인텐트(intent)니 너무 어렵습니다.

 

솔직히 저는 언어를 완벽히 공부하지 않아서 저도 잘 모릅니다.

 

그래서 저는 초보들도 알아들을 수 있게 쉽게 설명해 보겠습니다.

 

 

처음 앱을 만드려고 프로젝트를 생성하면 MainActivity가 생성됩니다.

 

여기서 우리는 액티비티(activity)라는 것을 처음 보게 됩니다.

 

뭔가 설명하기는 어렵지만 액티비티라는게 인터넷 웹페이지 페이지 하나하나라는 느낌이 살짝드나요?

 

 

우리가 어떤 웹 페이지를 접속하면 처음 나오는 home or index 화면이 있습니다.

 

그것과 같은 게 mainactivity화면이라고 보면 간단할 것 같습니다.

 

그래서 여러 activity를 만들고 이를 이동해가면서 앱을 기능하게 하면 됩니다.

 

그럼 이걸 왜 페이지라고 안부르고 액티비티(activity)라고 부를까요?

 

이유는 위의 안드로이드 개발자 사이트에서 그 이유를 찾을 수 있습니다.

 

 

 

 

안드로이드 앱은 우리가 사용할 때를 생각해보면 데스크탑의 구조와 다릅니다.

 

데스크탑은 프로그램과 프로그램 사이의 연결 고리가 거의 없습니다.

 

우리가 사진을 찍고 공유하는 과정을 비교해보겠습니다.

 

 

사진을 찍고 우리는 갤러리 앱에서 공유버튼을 누르고 바로 SNS로 공유를 합니다.

이 때 갤러리 앱에서 공유버튼을 누르면 SNS를 선택하는데 이 때 선택한 앱에서는 사진이 넘어올 때 어떤 액티비티를 실행시킬 지 고르게 됩니다.

 

데스크탑에서는 없는 부분이 바로 이런 부분입니다. 안드로이드 앱은 한 앱이 호출할 때 앱 전체를 실행하기 보다는 액티비티를 실행하도록 되어 있습니다.

 

그래서 한가지 앱에는 여러가지 액티비티들이 존재하고 필요할 때 마다 이 액티비티들을 꺼내 쓴다고 보면 됩니다.

 

그럼 앱은 어떻게 이 액티비티가 우리가 원하는 기능을 담은 액티비티 인지 구분할 수 있을까요?

 

 

이 부분은 좀 더 심화된 부분이라 초보자들 입장에서는 아직 몰라도 됩니다.

 

왜냐면 우리는 액티비티를 이제 만들기 시작했는데 다른 앱에서 우리 액티비티를 어떻게 부르고 쓰는지 보다는 액티비티가 제대로 구성되도록 만드는 것을 공부하는게 더 효율적이기 때문입니다.

 

그래도 궁금하신 분들은 manifest와 intent filter를 검색해서 공부해보시면 됩니다.

 

그리고 액티비티끼리의 이동은 intent로 하므로 intent에 관해서 더 공부해보시면 됩니다.

 

 

 

그래도 intent-filter에 대해서 간단히 보자면 우리가 액티비티를 만들게 되면 manifest 파일의 <application>요소 하위 부분에 <activity>요소가 추가되게 됩니다.

 

만약 추가되지 않으면 앱은 구동이 멈추게 되고 종료하게 됩니다.

 

그래서 각각의 액티비티를 manifest파일의 <acitivity>요소로 넣어주어야 되는데 이때 <intent-filter> 속성을 이용해서 어떤 intent를 받아서 작동할 지를 설정할 수 있습니다.

 

근데, 여기서 우리는 intent에 대해서 현재 개념이 없을 수 있습니다.

 

intent는 번역해보면 "의도"라는 뜻을 갖고 있습니다.

 

안드로이드에서 intent가 발생했다는 것은 어떤 의도를 가진 작동이 발생했다는 내용으로 보시면 좋습니다.

 

그래서 우리가 사진을 공유하겠다는 "공유"라는 의도를 발생 시키면 "공유"를 받을 것이라고 의도-필터(intent-filter)가 설정된 액티비티들이 목록으로 나오게 됩니다.

 

꼭 intent-filter가 아니더라고 intent 간의 이동을 설정해서 원하는 액티비티(activity)로 이동가능합니다.

 

글로 적혀있으면 참 복잡하지만 어렵게 생각할 필요는 없는 것 같습니다.


간단 요약 정리해보면

"액티비티(activity)는 우리가 만드는 안드로이드 앱의 페이지 같은 것이고 이 페이지들을 이동할 때는 intent라는 개념을 사용하고 intent-filter를 이용해서 내가 원하는 액티비티를 작동시킨다."

이정도로 정리해보겠습니다.

 

물론 이 내용이 다 맞는 내용은 아니고 초보자들의 이해를 약간이나마 높이기 위해 쓴 내용입니다.

 

혹시 보시다가 너무 틀린 내용이 있다면 꼭 댓글로 지적해주시면 감사하겠습니다.

오늘의 포스팅은 여기까지 입니다.

글이 유용하셨나요?

그렇다면 제 블로그를 즐겨찾기 추가하셔서 계속 보시는 것은 어떠신가요?

방문해주셔서 감사합니다.