BigJeon Android 개발 블로그

안드로이드 4대 컴포넌트란? 본문

안드로이드(기술)

안드로이드 4대 컴포넌트란?

Big-Jeon 2021. 5. 21. 16:47
반응형

나는 지금까지 어느 특정 기능을 구현시키는데 급급했고, 기능을 구현시킬줄 아는 능력이 개발자의 모든것인줄 알았다.

하지만 보통 회사에서 개발을할때 개인개발을 하는경우는 거의 없다고 볼만큼 협업을 통한 개발을 해야하는데

이럴때 안드로이드 구성요소, 내가 사용하는 프로그래밍의 언어의 기본이 없다면 다른 개발자와와 커뮤니케이션에서 문제가 발생한다.

마치 영어를 쉽게 말하고 듣고를 할수있다 하더라도 의사소통시 못알아듣거나 의미전달이 잘 안되는것처럼

기초를 모르면 협업시 생기는 커뮤니케이션에서 문제가 발생하는것이다.

이는 결국 개발능력이 떨어진다고 볼수있기에 지금부터라도 기초를 탄탄하게 잡아가기로 하자.

 

오늘은 안드로이드의 4대 컴포넌트를 간략하게 알아보도록 하겠다.

 

안드로이드의 4대 컴포넌트란?

안드로이드에서 4대 컴포넌트란 Activity, Service, Brodcast Receiver, Content Provider로 볼수있다.

안드로이드 4대 컨포넌트

물론 안드로이드 3.0(API level 11)이상부터는 프래그먼트가 추가되었지만 프레그먼트는 뷰가 아니기때문에 4대 컨포넌트에 추가하지는 않지만 현업에서 아주 많이 프레그먼트 또한 알아보도록 하겠다.

 

1. 엑티비티

Activity란 사용자의 인터페이스 즉 사용자가 보게 되는 화면을 관히해주는 컨포넌트이다.

흔히 새로운 프로젝트를 만들시 메인 액티비티 안에 OnCreate()가 기본적으로 생성되어있는것을 볼수있다.

그리고 우리는 그 안에 버튼의 색상을 바꿔준다거나, 입력을 받아 화면에 보여주는 기능들을 넣곤한다.

그리고 각 액티비티는 개별적으로 특정 생명주기를 가지고있는데,

안드로이드 공식 문서 를 보면 알수있듯 우리가 다른 액티비티를 새로 불러오고, 특정 상황에서 액티비티가 동작하도록 안드로이드에서는 여러 콜백 함수를 제공한다.

엑티비티의 특징중 가장 중요한것은 한번에 한개의 엑티비티만 보여줄수 있다는건데 아까 위에서 말한 프래그먼트가 이러한 단점을 보완할수있는것이다.

2.프래그먼트

프래그먼트의 생명주기또한 개별적인 생명주기를 가지고있지만 액티비티와 다른점은 프래그먼트가 띄워져있는 액티비티의 생명주기에 직접적인 영향을 받는다.

즉, 만약 A라는 액티비티에서 활동되는 프래그먼트는 아무리 활동을 하고있다해도 자신을 포함하고있는 액티비티의 생명주기가 끝나면 그 액티비티 안의 모든 프래그먼트들은 활동이 불가능하게 된다.

프래그먼트는 액티비티에 기생?을 하고있다 생각하면 될거같다. 더욱 자세한 내용은 프래그먼트 공식문서를 참고하기 바란다.

3.브로드캐스트 리시버

브로드 캐스트 리시버는 쉽게 말하면 내가 만든 어플과 그 어플을 실행시키는 단말기와의 신호교환을 위한 컨포넌트라 볼수있다.

이게 무슨말이냐?

만약 내 핸드폰이 알림을 띄우도록 해놨는데 단말기가 무음모드일때도 알림을 띄우면 안될것이다.

이럴때 아 단말기가 무음이니 알람도 무음으로 해줘야겠네? 라고 할때 쓰이는게 브로드캐스트 리시버이다.

요즘 잘 나오는 핸드폰을 두번 흔들어 QR체크인 창이나오는 몇몇 대기업의 어플기능이 이러한 브로드캐스트 리시버가 있기때문에 가능한거라 볼수있다.

4.서비스

서비스는 핸드폰 알람, 카카오톡 메시지 새로운 내용확인, 새로운 문자 수신등을 할때 사용되는데

즉 백그라운드에서 항시 대기를하고있는 컨포넌트라고 볼수있다.
만약 서비스 컨포넌트가 없었더라면 아무리 문자가오고 카톡이오고 알람을 맞춰놔도 어플을 항상 실행시켜놓지 않으면 의미가없을것이다.

하지만 이러한 서스를 이용하는 어플을 개발할때는 굉장히 민감하다.

내가 맨처음 코딩을 해보자 하였을때 난 일단 메모장위젯을 만들어보고 싶었다. 완전한 무지 상태에서 우여곡절끝에 만들긴 했었는데,

홈화면에서 위젯에 터치에따른 UI변화를 주려하니 이런 저런 경고가 많이나왔던것같다.(확실하진않지만 경고내용은 서비스를 사용하면 단말기의 배터리, 성능을 크게 감소시킬수있어 제한되었다 이런 내용이었던것같다.)

서비스에 대한 제한은 내가 코딩을 처음 해보겠다 마음 먹은뒤로도 못해도 한번이상은 바뀐것같다.

그만큼 사용하기 민감한 컨포넌트이므로 사용시 신중하게 사용해야한다.

5.콘텐트 프로바이더

콘텐트 프로바이더는 이름 그대로 어떠한 데이터를 제공해주는 역활을한다.

예를들어 내가 다른 어플에 있는 데이터를 가져와 쓰고싶을때 사용하는것이 콘텐트 프로바이더인것이다.

콘텐트 트로바이더는 한 프로세스의 데이터에 다른 프로세스에서 실행 중인 코드를 연결하는 표준 인터페이스인데,

이말은 내가 만든 어플을 실행시켰다하더라고 다른 외부 데이터를 받아올수있게 만들어 준다는것이다.

컨텐트프로바이더의 가장 큰 장점으로는 다른 어플리케이션이 설정된 컨텐트 프로바이더를 통해 안전하게 엑세스하여 데이터를수정할수있게 만들어 준다는것이다. 이러한 기능이 가능하게 할려면 보안이 중요하기 때문에 안드로이드에서는 보안을위한 여러가지 보안 메커니즘을 제공하고있다.

 

이렇게 간략하게 안드로이드의 4대 컨포넌트에 대하여 알아보았다(프래그먼트도 쪼오금) 아무것도 모르던 상태에서 코딩을하다보면 기능 구현을위해 무엇을 사용해야할지 모르는경우가 생기는데 이럴때 이 4대 컨포넌트를 통해 생각하다보면 해답을 알수있을것이다.

 

그럼 4대컨포넌트에 대한 포스팅은 이쯤하고

앞으로 각종 개념, 기초들을 자주 올리도록하겠다.

 

반응형