이번 포스팅은 기본 애플리케이션이라는 제목으로 작성하였다. 막상 안드로이들 개발을하면서 어떤 원리로 안드로이 버튼이 재생되고 전송되는지 잘모른다. 이번 포스팅을 통해서 이러한 부족한 개념을 집고 넘어 가야겠다.
※ 애플리케이션 컴포넌트
○ 컴포넌트
- 안드로이드 애플리케이션 구성요소
- 하나의 독립된 엔티티로 존재
- 각 컴포넌트는 애플리케이션을 시작하는 진입점을 가질 수 있다.
- 액티비티
- 서비스
- 방송수신자
- 콘텐츠 제공자
(액티비티,서비스 등 어떤 프로그램의 최상위 클래스라 생각하면 될듯)
※ 액티비티(Activity)
- 사용자 인터페이스 화면을 가지고 하나의 작업을 담당하는 컴포넌트
- 하나의 화면이 하나의 액티비티
- Activity 클래스를 상속 받음
※ 서비스(Service)
- 백그라운드에서 실행되는 컴포넌트
- 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업을 할때 사용됨
- 사용자 인터페이스 화면을 가지지 않음
- 배경음악 연주
- Service 클래스를 상속
※ 방송수신자(broadcast receiver)
- 방송을 받고 반응하는 컴포넌트
- 방송 : 시스템에서 발생
- 만약 와이파이 접속이 끊겼을 때 BroadcastReceiver 를 등록하면 시스템에서 전송하는 와이파이 끊김 알림을 받을 수 있게 됨
- 화면이 꺼짐, 배터리 사용 가능량
- BroadcastReceiver 클래스를 상속
(블루투스 모듈을 이용한 개발을 이용할때 브로드 캐스터 리시버를 이용하여 송수신한다.)
※ 콘텐트 제공자(Content Provider)
- 각 앱은 자신의 데이터만 접근 가능
- B 앱에서에서 A앱의 데이터를 접근하고자 할 때 (다른 앱에서 갤러리의 사진을 접근하고자 할 때)ContentProvider를 통해서만 제공받을 수 있다
- 데이터를 공유하면서 다른 프로그램이 임의로 데이터를 바꿀수 없더록 제어할 수 있음
- ContentProvider 클래스 상속
(보안적으로 우수한 데이터 송수신 클래스인것 같음)
※ R 클래스
- 레이아웃 파일, string.xml에 들어 있는 문자열, 버튼 등의 id, 이미지 파일의 id 등을 저장
- [app] - [패키지 이름] - [R]
- Ctrl + F : 검색
(R클래스는 안드로이드 findViewid 를 사용할때 가장 많이보이는 값이다. R은 안드로이드 패키지 내의 경로의 하나의 약어이다)
※ 환경 설정 파일/메타 정보 파일
- AndroidMainifest.xml : 안드로이드 시스템이 알아야 하는 필수 정보를 가지고 있고, Application의 권한 정보, Activity 정보를 가짐
- 이런식으로 안드로이드안에 속성들의 권한또는 Activitiy에 관한 권한 설정들을 할수가 있다.
- <intent-filter> 이부분은 프로젝트의 시작점의 권한을 설정할수가 있다. 4개의 컴포넌트 모두가능(액티비티,방송수신자,서비스,콘텐츠제공자)
※ intent
- 애플리케이션이 원하는 컴포넌트를 안드로이드 안에서 찾아 실행시키는 방법
- 비동기적 메세지
※ 매니페스트에서 사용할 수 있는 태그
<action> |
인텐트 필터에 액션 정의 |
<intent-filter> |
action,service,BroadcastReceiver가 응답할 수 있는 인텐트 유형을 지정 |
<permission> |
앱의 요소나 기능에 대한 액세스를 제한하는 보안 권한 선언 |
<provider> |
콘텐츠 공급자 구성 요소를 선언 |
<receiver> |
BroadcastReciever를 앱의 구성요소로 선언 |
<service> |
앱의 구성요소중 하나인 서비스를 선언 |
<uses-permission> |
앱이 올바르게 동작하기 위한 권한 요청 |
※ Gradle Srcript
- 애플리캐이션이 어떻게 구성 될 것인지 빌드 정보와 환경 정보를 가짐(라이브러리 정보)
※ res
- resource 의 약자
- 레이아웃 파일, 아이콘 및 그림 파일, 앱을 작성하는데 쓰이는 많은 기타 파일
디렉토리 |
리소스ID |
리소스 유형 |
drawable |
R.drawable 파일이름 |
이미지 |
mipmap |
R.mipmap |
각기 다른 런처 아이콘 해상도에 대한 이미지 |
layout |
r.layout |
액티비티 레이아웃을 정의하는 xml |
menu |
R.menu |
옵션 메뉴, 컨텍스트 메뉴, 하위 메뉴 등과 같은 메뉴정의 xml |
raw |
R.raw |
안드로이드의 시스템에 의한 압축이나 변형없이 그대로 저장될 파일 |
values |
R.string R.color R.style |
코드와 레이아웃 모두에서 사용할 수 있는 공통 리소스를 정의한 xml |
※주요 매서드 설명
매서드 |
호출시기 |
다음 호출되는 메서드 |
onCreate() |
엑티비티가 처음 생성되었을 때 호출됨 |
onStart() |
onRestart() |
엑티비티가 중단되었다가 다시 시작되기 직전에 호출 |
onStart() |
onStart() |
엑티비티가 유저에게 표시되기 직전에 호출 표시되면 onResume() 숨겨지면 onStop() |
onResume() onStop() |
onResume() |
엑티비티가 시작되고 유저와 상호작용하기 직전에 호출 |
onResume() |
onPause() |
시스템이 다른 액티비티를 표시하기 직전에 호출 |
onStop() |
onStop() |
엑티비티가 더 이상 사용자에게 표시되지 않게 되면 호출됨 엑티비티가 유저와 상호 작용하면 onRestart() 엑티비티가 사라지면 onDestroy() |
onRestart() onDestroy() |
onDestroy() |
엑티비티가 소멸되기 전에 호출됨 엑티비티의 마지막 호출 |
|
※ xml
- 화면 제어
- Text 에 직접 코드 입력
- Xml 주석
-<!-- -->
- 기본 레이아웃 <LineraLayout>
'개인공부' 카테고리의 다른 글
Github vs Gitlab (0) | 2020.07.10 |
---|---|
안드로이드 : 기본 위젯 (0) | 2020.07.09 |
안드로이드 : 테이블레이아웃(계산기) (0) | 2020.07.09 |
안드로이드 : 렐러티브레이아웃 (0) | 2020.07.09 |
안드로이드 : 레이아웃 기본개념(LinearLayout) (0) | 2020.07.09 |