Android 4대 컴포넌트에는
Activity, Sercive, Content Provider, Broadcast Receiver 가 있다.
이 네가지 컴포넌트에 대해 자세히 알아보자!
Activity
사용자 인터페이스 화면을 구성, 관리하는 컴포넌트
액티비티 역할을 하기 위해서는 Activity 클래스를 상속해야 하며,
액티비티가 기본적으로 가지고 있는
생명주기 메소드를 재정의해서 원하는 기능을 구현해야 한다.
다른 애플리케이션의 액티비티를 불러낼 수 있다.
액티비티의 크기는 상태바(Status Bar) 영역을 제외한
화면 전체로 고정(원하는 위치에 원하는 크기로 변경할 수 없음)되어 있다.
두 개의 액티비티를 동시에 보여줄 수 없다.
Java 파일과 xml 파일이 속한다.
Activity 메소드
* R Class
R 클래스는 안드로이드 빌드 시스템에 의해 자동으로 생성되는 자바 클래스
이 클래스는 리소스를 효율적으로 접근할 수 있도록 리소스를 int 값으로 관리하는 역할을 한다.
R 클래스의 모든 클래스와 변수가 static으로 선언되어 있다.
이렇게 static으로 선언되면 별도의 객체 생성을 하지 않고도 접근할 수 있게 되어
R.layout.main과 같은 자바 코드를 사용할 수 있게 된다.
Service
특정 액티비티와 상관 없이 (화면에 보이지 않더라도)
백그라운드에서 실행되는 컴포넌트.
화면을 구성하는 레이아웃을 작성할 필요가 없다.
지속적으로 장시간 동작해야 하는 기능이 있다면 서비스에 구현해야 한다.
서비스로 동작하게 하고 싶다면 Service 클래스를 상속한 후,
생명주기 메소드를 재정의해서 원하는 기능을 구현하면 된다.
ex) 멜론: 다른 어플을 동작 시켜도 멜론에서 노래는 계속 나옴
카카오톡 뒤로가기를 눌러도 톡이 계속 오는 것
* ios 는 Service가 없음
Broadcast Receiver
ex) 핸드폰의 배터리가 low가 되었을 때 화면이 어두워 지는 것,
에어팟(무선 이어폰)이 연결되면 연결 되었다고 뜨는 것,
이렇게 변화를 위해서 조건이 되는 상태들을 감지하는 것
특정 브로드캐스트에 반응하는 컴포넌트
사용자 인터페이스를 가지고 있지 않다.
브로드캐스트에는 시간대 변경, 배터리 부족, 언어 설정 변경 등이 있으며,
이러한 브로드캐스트를 받으면 브로드캐스트 리시버는 이를 처리하고 다시 대기 모드로 진입한다.
10초 이내의 작업만을 보증하므로 오랜 시간 동작해야 한다면
별도의 스레드로 처리하거나 서비스에 구현해야 한다.
자바 클래스가 브로드캐스트 리시버로 동작하게 하고 싶다면
BroadcastReceiver 클래스를 상속한 다음에
onReceive() 메소드에 원하는 기능을 작성하면 된다.
Content Provider
앱과 앱 저장소 사이에서 데이터 접근을 쉽게 하도록 관리해주는 클래스
ex) 카카오톡에서 상대방에게 전화번호 정보를 제공하는 경우 주소록에 접근
manifest에서 권한을 부여해주어야 한다.
읽기, 쓰기, 수정하기, 삭제하기 기능을 작성할 수 있으며,
실제 코드로 살펴보면 다음과 같다.
이렇게 콘텐트 프로바이더가 구현되어 있으면
다른 애플리케이션에서는 구현된 메소드를 호출하기만 하면 된다.
public class MyProvider extends ContentProvider {
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
public String getType(Uri uri) {
return null;
}
public Uri insert(Uri uri, ContentValues values) {
return null;
}
public boolean onCreate() {
return false;
}
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return null;
}
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
return 0;
}
}
프로그래밍 공부를 위해 여러 자료들을 토대로 작성한 기록입니다.
개인 공부에만 사용해주시고, 상업적인 활용과 재배포를 금지합니다.
'Android' 카테고리의 다른 글
[Android] Intent와 Intent filter (0) | 2021.04.22 |
---|---|
[Android] Button 비활성화 / 클릭 이벤트 없애는 방법 (0) | 2021.04.20 |