반응형

이번 포스팅에서는 안드로이드의 시스템 구조에 대하여 알아 보겠습니다.





1. 안드로이드의 구조는 크게 네 분류으로 나눌 수 있습니다. 리눅스 커널과 라이브러리와 버추얼 머신, 어플리케이션 프레임워크, 어플리케이션 이렇게 네 분류로 나눌 수 있습니다. 각 부분에 대해 알바보도록 하겠습니다.



2. 리눅스 커널

- 안드로이드는 리눅스 커널 위에 만들어 졌지만 안드로이드가 리눅스는 아님

- 핵심적인 시스템 서비스들을 제공하며, 프로세스, 메모리, 전원 관리, 네트워크, 드라이버, 보안 들의 내용을 포함

- 표준 리눅스 도구를 모두 제공하지 않음

- 안드로이드 커널도 공개되어 있음



3. 라이브러리와 버추얼 머신

- C/C++로 구성된 라이브러리로 어플리케이션 프레임워크를 통해 사용할 수 있도록 구성됨

- 코어 라이브러리는 자바 라이브러리의 대부분 기능을 제공

- 안드로이드 어플리케이션을 위한 실행 환경을 제공하는 Drlvik VM의 실행 파일은 최소한의 메모리에 최적화된 Dex(Dalvik EXecute) 포멧을 사용하며 안드로이드 어플리케이션은 독립적 프로세스를 할당 받음

버추얼 머신에서 각각의 안드로이드 어플리케이션은 하나의 프로세스로 실행되며 Dalvik VM의 인스턴스를 받음

- 버추얼 머신은 디바이스가 여러 개의 VM을 효율적으로 실행할 수 있도록 구성되어 있음

- 버추얼 머신은 Dalvik에서 안드로이드 5.0부터 AOT 기술을 구현한 ART로 실행

- 버추얼 머신이 실행 포멧인 dex 포멧은 최소한의 메모리만을 사용할 수 있도록 최적화되어 있고 컴파일 시에 생성됨




4. 어플리케이션 프레임워크

- 안드로이드에서  제공하는 어플리케이션도 어플리케이션 프레임워크의 API에 기반하는 경우가 많음

- 간단한 재사용 컴포넌트, 어떤 어플리케이션과도 호환 가능한 호환성을 제공

- Activity Manager는 어플리케이션의 라이프 사이클을 제어함

- Content Provider는 어플리케이션 간에 데이터를 공유할 수 있도록 함

- Resource Manager는 코드 이외의 부분인 리소스를 관리함

- Location Manager는 자신의 위치 파악에 필요한 기능을 제공함

- Notification Manager는 알림 기능를 사용자에게 방해가 되지 않도록 제공함



5. 어플리케이션

- 모든 어플리케이션은 Java로 작성되며 어플리케이션 프레임워크의 API를 사용할 수 있음

- 안드로이드의 핵심 어플리케이션들은 이메일 클라이언트, SMS 프로그램, Calendar, Maps, 웹브라우저, 연락처들을 포함함


반응형
반응형

이번 포스팅은  GridLayout 특징에 대하여 알아보도록 하겠습니다.


1. 바둑판과 같은 행과 열로 이루어진 격자 모양으로 위젯을 배치할 수 있도록 하는 Layout


2. API 14부터 제공


3. API 14 미만 버전에서는 gridlayout-v7(API 7 이상부터 사용 가능) 이라는 Support  레이아웃을 통해 하위 버전에서도 사용 가능


4. GridLayout 내에 위젯을 배치하면 orientation에 의해 자동으로 가로 또는 세로로 우선으로 배치되고

    가로 또는 세로의 개수는 columnCount나 rowCount로 설정할 수 있다. (기본orientation 은 가로)


5. 위젯은 layout_column과 layout_row로 원하는 위치를 지정할 수 있고, layout_gravity로 정렬 방식을 지정


6. 위젯은 layout_columnSpan과 layout_rawSpan으로 Cell간 합치기를 가능


7. API 21부터는 layout_columnWeight와 layout_rowWeight를 제공


   (weight를 지정하려면 모든 셀에 지정)


8. GridLayout 속성


   # useDefaultMargin - 위젯간 default 여백(4dp) 설정 여부로 설정하지 않으면 0dp

   # alignmentMode - GridLayout 내에서의 위젯의 정렬 기준(alignBounds, alignMargins)

반응형

'Development > Android' 카테고리의 다른 글

[Android] Lollipop (Android OS 5.0) 특징  (0) 2016.04.22
[Android] Android의 구조  (0) 2016.04.22
[Android] dp를 px값으로 변환  (0) 2016.04.14
[Android] View의 터치영역 넓히기  (0) 2016.03.25
[Android] AsyncTask 중지하기  (0) 2016.03.23
반응형

이번 포스팅은 Android에서 화면의 Dp 값을 Pixel로 변환하는 방법에 대하여 알아보도록 하겠습니다. 

Resource r = getResource();

int px = (int) typeValue.applyDimension(TypeValue.COMPLEX_UNIT_DIP, 200, r.getDisplayMetrics());


myEditText.setWidth(px);

반응형

'Development > Android' 카테고리의 다른 글

[Android] Android의 구조  (0) 2016.04.22
[Android] GridLayout  (0) 2016.04.18
[Android] View의 터치영역 넓히기  (0) 2016.03.25
[Android] AsyncTask 중지하기  (0) 2016.03.23
[Android] Intent로 객체 전달하기  (0) 2016.02.12

+ Recent posts