✅ Manifest 개요
https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ko
- 모든 앱 프로젝트는 AndroidManifest.xml 파일을 포함해야 한다.
- 매니페스트 파일은 Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명한다.
- 매니페스트 파일은 다음과 같은 내용을 포함한다.
· 앱의 패키지 이름
· 앱의 구성 요소
· 앱이 시스템 또는 다른 앱의 보호된 부분에 액세스하기 위해 필요한 권한
· 앱에 필요한 하드웨어 및 소프트웨어 기능
✅ Manifest 주요 속성 10가지
1) <menifest>
- AndroidManifest.xml 파일의 루트 요소로, <application> 요소를 포함해야 한다.
- xmlns:android 및 package 속성을 지정한다.
2) <application>
- 애플리케이션의 각 구성요소를 선언하는 하위 요소를 포함하며 모든 구성요소에 영향을 줄 수 있는 속성을 가지고 있다.
- 이러한 속성 중 다수(예: icon, label, permission, process, taskAffinity, allowTaskReparenting)는 구성요소의 상응하는 속성에 기본값을 설정하고, 그 외 속성(예: debuggable, enabled, description, allowClearUserData)은 애플리케이션의 값을 전체적으로 설정하며 구성요소별로 재정의할 수 없다.
3) <activity>
- 애플리케이션의 시각적 사용자 인터페이스 요소를 구현하는 activity를 정의한다.
- 모든 activity는 매니페스트 파일의 <activity> 요소로 나타내야 한다. 여기에 선언되지 않은 activity는 시스템에 표시되지 않으며 실행되지 않는다.
4) <service>
- service를 정의한다.
- 시각적 사용자 인터페이스가 없다.
- 오래 실행되는 백그라운드 작업이나 다른 애플리케이션에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데 사용된다.
- 모든 service는 매니페스트 파일의 <service> 요소로 나타내야 한다. 여기에 선언되지 않은 service는 시스템에 표시되지 않으며 실행되지 않는다.
5) <receiver>
- broadcast receiver를 정의한다.
- broadcast receiver를 사용하면 애플리케이션의 다른 구성요소가 실행되고 있지 않을 때도 시스템이나 다른 애플리케이션에서 브로드캐스트하는 인텐트를 애플리케이션에서 수신할 수 있다.
- <receiver> 태그 안에 intent filter를 정의하여 어떠한 브로드캐스트 메시지에 반응할지를 지정할 수 있다.
6) <provider>
- content provider를 정의한다.
- content provider는 애플리케이션 내의 데이터베이스를 다른 애플리케이션이 공유할 수 있도록 해주는 역할을 한다.
- 모든 content provider는 manifest 파일의 <provider> 요소에서 정의해야 한다.
7) <intent-filter>
- activity, service, broadcast receiver가 응답할 수 있는 인텐트의 유형을 지정한다.
- 상위 구성요소의 기능, 즉 각 활동이나 서비스가 할 수 있는 작업과 수신기가 처리할 수 있는 브로드캐스트의 유형을 선언한다.
- 전달되는 유형의 수신 인텐트로 구성요소를 열고 이 구성요소에 유의미하지 않은 인텐트를 필터링한다.
8) <action>
- intent filter에 작업을 추가한다.
- <intent-filter> 요소에 <action> 요소가 하나 이상 포함되어야 한다. intent filter에 <action> 요소가 없으면 필터가 Intent 객체를 허용하지 않는다.
9) <category>
- intent filter에 카테고리 이름을 추가한다.
10) <uses-permission>
- 앱이 올바르게 작동하기 위해 사용자가 반드시 부여해야 하는 시스템 권한이다.
- 애플리케이션이 설치될 때 또는 앱이 실행중일 때 사용자에게 권한이 부여된다.
✅ 4대 컴포넌트
https://developer.android.com/guide/components/fundamentals?hl=ko
- 각 컴포넌트는 독립적인 형태로 존재한다.
- 각 컴포넌트는 고유한 기능을 수행한다.
- 각 컴포넌트는 Intent를 통해 상호작용한다.
1) Activity
- 사용자와 상호작용을 담당하는 인터페이스
- 모든 안드로이드 애플리케이션은 하나 이상의 액티비티로 구성되어 있다.
- 생명주기 관련 메서드들을 재정의하여 원하는 기능들을 구현할 수 있다.
- 여러 개의 액티비티를 동시에 호출할 수 없다.
- 다른 애플리케이션의 액티비티를 호출할 수 있다.
2) Service
- 백그라운드에서 실행되는 구성요소
- 오랫동안 실행되는 작업을 수행하거나 원격 프로세스를 위한 작업을 수행한다.
- 사용자 인터페이스를 제공하지 않는다.
- 예) 음악 재생, 데이터 동기화 등
3) BroadCast Receiver
- 시스템이 정기적인 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하는 구성요소
- 앱이 시스템 전체의 브로드캐스트 알림에 응답할 수 있게 한다.
- 현재 실행되지 않은 앱에도 시스템이 브로드캐스트를 전달할 수 있다.
- 예) 배터리 부족 알림, 사진 캡처 알림 등
4) Content Provider
- 저장 가능한 앱 데이터의 공유형 집합 관리
- 다른 앱은 콘텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 콘텐츠 제공자가 허용할 경우 수정도 가능하다.
- 예) 안드로이드 시스템은 사용자의 연락처 정보를 관리하는 콘텐츠 제공자를 제공한다.
✅ Intent
https://developer.android.com/guide/components/intents-filters?hl=ko
- 인텐트는 메시징 객체로, 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있다.
1) 액티비티 시작
- Activity의 새 인스턴스를 시작하려면 Intent를 startActivity()로 전달
- Intent는 시작할 액티비티를 설명하고 모든 필수 데이터를 담는다.
- 액티비티가 완료되었을 때 결과를 수신하려면 startActivityForResult() 호출
- 액티비티는 해당 결과를 onActivityResult() 콜백에서 별도의 Intent 객체로 수신
2) 서비스 시작
- Android 5.0(API 레벨 21) 이하 버전은 Service 클래스의 메서드를 사용하여 서비스 시작
- 일회성 작업 수행 -> Intent를 startService()에 전달
- Intent는 시작할 서비스를 설명하고 모든 필수 데이터를 담고 있다.
3) 브로드캐스트 전달
- Intent를 sendBroadcast() 또는 sendOrderedBroadcast()에 전달
- 인텐트 유형
1) 명시적 인텐트: 인텐트를 충족하는 애플리케이션이 무엇인지 지정
- 앱 내의 특정 액티비티나 서비스 등 특정한 앱 구성 요소를 시작하는 데 사용
2) 암시적 인텐트: 수행할 일반적인 작업 선언
- 작업을 지정하여 기기에서 해당 작업을 수행할 수 있는 모든 앱을 호출할 수 있도록 한다.
'* > Android' 카테고리의 다른 글
[안드로이드] ③ 주요 Layout (0) | 2022.09.28 |
---|---|
[안드로이드] ② Palette (0) | 2022.09.28 |
[안드로이드] Jsoup 사용해서 웹 크롤링 (0) | 2021.10.02 |
[안드로이드] 이미지뷰 크기 조절 (0) | 2021.10.01 |
[안드로이드] 다이얼로그 플로우 연동 (0) | 2021.09.04 |