IT이야기/Android

안드로이드 애플리케이션 구성요소

FelixShin 2017. 2. 20. 14:16
반응형

1. 애플리케이션구성요소

1) 애플리케이션의 기능 구분

안드로이드 앱 구성요소는 크게 Activity, BroadcastReceiver, Service, ContentProvider 4개 컴포넌트로 나누어져 있다.

사용자와 인터페이스 하는 것은 액티비티, 백그라운드 작업하는 것은 서비스, 이벤트 발생시 일하는 것은 리시버라고 한다. 데이터 전달은 프로바이더가 책임진다.


2. 컴포넌트 설명

1) 액티비티

: 액티비티는 기본적으로 사용자와 인터페이스가 가능한 Window를 하나 가지고 있는 컴포넌트임.

: 액티비티는 Stack으로 관리됨


2) 서비스

: 사용자 인터페이스 없이 돌아가는 앱 컴포넌트

: 서비스 인스턴스는 안드로이드내에 오직 1개만 만들어짐

: startService와 bindService라는 2가지 방식으로 구동될 수 있음

: 서비스를 가지고 있는 앱은 단말 메모리 부족시 잘 죽지 않음


3) Receiver

: 리시버는 플랫폼이나 다른 앱이 보내는 Event를 받아 처리하는 앱 컴포넌트

: sendBroadcast() 등의 함수를 통해 이벤트 보내짐

 ex) SMS도착, 단말기 부팅, 화면 꺼짐 등의 이벤트 를 수신


4) Provider

: 앱이 가지고 있는 데이터를 다른 앱에서 접근할 수 있도록 만들어주는 앱 컴포넌트

: 프로바이더는 데이터 read, write에 대한 퍼미션이 있어야 앱 접근 가능

:프로바이더는 getType(), query(). insert(), update(), delete(), onCreate()를 구현해줘야 함



3. Intent

1) 인탠트란?

: 인텐트를 실행하고자 하는 액티비티, 서비스, 리시버의 정보를 기술하는 class

: 인텐트에는 명시적 Intent와 암시적 Intent가 존재

# 명시적 인텐트 : 호출 대상이 확실히 알 수 있는 인텐트 / 암시적 인텐트 : 액션과 데이터를 지정했지만 호출대상이 달라질 수 있는 경우


2) 인텐트 사용 메소드

(1) 엑티비티 시작할 때 : startActivity

(2) 리시버 객체 구동시 : sendBroadcast

(3) 백그라운드 서비스와 정보 주고 받을 때

: startService(Intent)

: bindService(Intent, ServiceConnection, flags)


3) 인텐트 구성요소

컴포넌트 이름, 엑션, 데이터, 카테고리, 엑스트라(인텐트 처리시 전달되는 키-벨류 값)와 플래그

사용 예) 

# 주소록 호출하기

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://contacts/people"));
startActivity(intent);


# 인터넷 페이지 열기 -> 여기서는 superfelix.tistory.com 를 열어보자.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://superfelix.tistory.com"));
startActivity(intent);


4. IntentFilter

: 엑티비티, 서비스, 리시버가 처리할 수 있는 기능 기술을 위해 사용하는 class로 action, category, data를 설정할 수 있고, data는 uri와 type을 설정할 수 있음