1) Linux Kernel, HAL
2) Native C/C++ libraries
3) Android Runtime
4) JAVA API Framework
1) Application Module : 앱 만들 때 생성되는 파일들의 종류
2) Dependencies : 라이브러리
3) DEX File(s)
4) Compiled Resources : 리소스 범위 다양
5) Debug or Release Keystore : key쌍 얻기
6) APK Packager
7) Debug or Release APK : 배포
1) Activity : 하나의 화면(의 관리자)
- 사용자 인터페이스 화면을 가지는 하나의 작업
- Activity 클래스 상속
extends Activity -> Activity 상속한 것은 모두 Activity (AppCompatActivity도 Activity의 자식)- Activity들이 모여서 앱이 된다.
2) Service
- 백그라운드에서 실행되는 컴포넌트 (화면 전환에 상관X)
- 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업 (ex. 배경음악)
- Service 클래스 상속 -> Override로 Customize
3) Broadcast reciver
- 방송을 받고 반응하는 컴포넌트
- BroadcastReceiver 클래스 상속
- 방송 ex. 시스템부팅, 파일 다운로드, 배터리 부족
- 관심 등록한 방송의 신호만 수용 -> trigger삼아서 Receiver가 약속된 동작 수행하도록
4) content provider
- 데이터를 관리 & 다른 앱에게 데이터 제공하는 컴포넌트
- ContentProvider 클래스 상속
- native application (ex. 전화번호부, 갤러리 등)은 기본적으로 ContentProvider를 가짐.
- ContentProvider는 외부에 데이터를 공유할 때 사용
1) 태그 종류
<태그명> 다른 태그 내포 및 내용 </태그명>
<태그명 내용 />
다른 태그 내포X (leaf node)
여는 태그부터 닫는 태그까지가 한 element
2) 초기 코드
3) 특징
1) 코드 내부에서 :
msgTextView.setText(R.string.hello)
-> Resource 필요
public final class R {
...
public static final class string {
...
public static final int hello = 0x7f050001;
...
getWindow().setBackgroundDrawableResource(R.drawable.graphic);
2) XML 내부에서 :
// res/layout/activity_main.xml파일
<?xml version="1.0" encoding="utf-8"?>
<EditText xmls:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/opaque_red"
android:text="@string/hello"
다른 Resource 접근 : text = "@태그명/속성명"
// res/values/strings.xml파일
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<string name="hello">Hello!</string>
//화면에 Hello! 출력
</resources>
-> 실행되는 위치에 따라 앱의 언어 변경 가능
"hello"라는 이름을 언어별로 정리해줌
text = "Hello!"보다는 resource 접근법을 활용할 것!