반응형

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


Fragment에 대하여...첫번째 이야기


소화면의 스마트 폰용으로 작성한 앱을 대화면의 태블릿에서 실행하면 공간이 너무 많이 낭비되어 썰렁해 보이며 넓은 화면의 장점을 사용할 수가 없습니다. 

그래서 태블릿같은 대화면에서는 화면을 분할하여 사용자에게 보여주면 대화면의 이점을 살릴 수가 있습니다.

그래서 화면을 분할하는데 이용되는 것이 바로 Fragment 입니다. 


1. 먼저 Fragment의 특징을 알아보도록 하겠습니다.

 - Fragment는 Activity에 배치되어 화면의 한 부분을 정의합니다.

 - Android 3.0 부터 지원됩니다.

 - 하나의 Activity는 여러개의 Fragment를 가질 수 있습니다.

 - 독립적인 모듈이고 Life Cycle을 가지지만, Activity의 Life Cycle 변화에따라 Fragment의 Life Cycle이 변경됩니다.

 - layout xml에서 view와 함께 배치할 수 있습니다.

 - 서로 다른 Activity에서 동일한 Fragment class를 이용할 수 있습니다.

 - 여러 Activity에서 재사용할 수 있습니다.



2. Fragment의 Life Cycle

 - Fragment는 Activity 내에 있는 FragmentManager에 의해 관리됩니다.

 - Fragment의 Life Cycle은 Activity의 Life Cycle이 변경됨에 따라 같이 변경됩니다.



- Fragment의 Life Cycle 과 FragmentManager의 상태와 비교하여 알아보도록 하겠습니다.


- Fragment의 Life Cycle은 Activity의 Life Cycle과 유사하지만 몇 가지 추가된 콜백이 더 있습니다.

  많은 콜백 중에 onCreate, onCreateView, onPause 콜백은 거의 필수적으로 구현해야 하며 나머지는 필요할 때만 구현하면 됩니다.

- Activity가 생성될 대 Fragment의 다음 콜백이 순서대로 호출되며 여기서 프래그먼트를 초기화 합니다.


- onAttach ~ Activity에 Fragment가 처음 부착될 때 호출됩니다.

- onCreate ~ Fragment가 생성될 때 시스템에서 됩니다. 이 단계에서는 Host Activity(Fragment를 호출하는 Activity)도 아직 초기화중인 상태이며 따라서 Activity의 컨트롤을 안전하게 참조할 수 없습니다. 

Activity가 완전히 초기화된 시점이 필요하면 onActivityCreated 콜백을 사용해야 합니다.

- onCreateView시스템은 Fragment가 자신의 사용자 인터페이스를 처음으로 그릴 시간이 되면 이것을 호출합니다. Fragment에 맞는 UI를 그리려면 메서드에서 View를 반환해야 합니다. 이 단계에서 Fragment는 자신의 Layout을 생성한 후 Root View를 리턴합니다. 이 메서드는 Fragment 레이아웃의 루트입니다. Fragment가 UI를 제공하지 않는 경우 null을 반환하면 됩니다.

- onPause시스템이 이 메서드를 호출하는 것은 사용자가 Fragment를 떠난다는 것을 나타내는 첫 번째 신호입니다(다만 항상 Fragment가 소멸 중이라는 것을 의미하지는 않습니다). 일반적으로 여기에서 현재 사용자 세션을 넘어서 지속되어야 하는 변경 사항을 저장합니다(사용자가 돌아오지 않을 수 있기 때문입니다).

반응형
반응형

이번 포스팅에서는 Android의 Build 전과정에 대하여 알아보도록 하겠습니다. 


Android 빌드 전 과정


코딩을 통해 개발을 잘 하는 것도 중요하지만 Android가 어떻게 Build가 되는지 전 과정을 이해하고 

개발을 한다면 Resources 관리도 좀 더 효율적으로 할 수 있을 것입니다.



1. aapt (Asset Packaging Tool)



    - AndroidManifest.xml 이나 Activity를 위한 XML files 들과 같은 Application resource files을 compile하여 

       R.java 생성하고 특정 resource id로 매핑시킵니다.


    - resource들을 하나로 묶어 resources.ap_라는 중간 파일로 생성을 해 둡니다.



2. aidl tool



     - .aidl interface를 java interfaces로 만들어 줍니다.


3. java Compiler



    - aapt로 생성된 R.java 파일과 aidl로 생성된 java interfaces 

      그리고 작성한 소스코드를 컴파일해서 .class 파일로 만들어 줍니다. 


  ※ proguard 과정이 일어납니다.


4. dex



     - .class 파일들과 3rd party libraries 클래스 파일들을 

       모두 dalvik byte code를 위한 .dex 파일로 만들어 줍니다.


5. apkbuilder



     -  aapt가 생성한 resources.ap_라는 중간 파일과 .dex 파일을 하나로 묶어 .apk로 패키징 합니다.


6. jarsigner



    - debug 또는 release용 keystore로 signing을 합니다.


7. zipalign (release mode)



    - Release mode로 sign하면 zipalign tool을 이용하여 align 시켜줍니다.


    - 최종 .apk를 aligning 하면 application이 디바이스에 작동 시에 memory usage를 감소 시킵니다.




참고 자료 : 찬영이의 블로그



반응형
반응형

이번 포스팅은 Android 6.0 버전인 마시멜로에 대하여 알아보도록 하겠습니다.


1. 지문인식 기능 지원


2. Runtime Permission


3. Doze And App Standby


4. Apache Gttp Client 제거


5. 단말 인증 기능을 이용한 사용자 인증


6. App Linking - url을 이용하여 앱을 실행하거나 market으로 이동하도록 하는 기능


7. 자동 Backup


8. Direct Share


9. Voice Interaction


10. Now on Tap 기능 지원


11. Adaptable Storage Device 지원


12. Blutooth Stylus 지원


13. MID, Media Sysnc


14. 카메라에 손전등 모드 추가


15. Device Owner에서 Keyguard 설정이나 Silent한 앱을 설치/삭제 등의 기능 추가

반응형

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

[Android] Fragment에 대하여...첫번째  (0) 2016.04.27
[Android] Android Build 전 과정  (0) 2016.04.22
[Android] Lollipop (Android OS 5.0) 특징  (0) 2016.04.22
[Android] Android의 구조  (0) 2016.04.22
[Android] GridLayout  (0) 2016.04.18
반응형

이번 포스팅에서는 Android 5.0 버전인 롤리팝 특징에 대하여 알아보도록 하겠습니다.


1. Dalvik cache를 ART(Android Runtime)으로 완전히 변경


2. 64비트 CPU를 지원


3. OpenGL ES 3.1 지원


4. Material Design 프로젝트 적용

 (자세한 내용 보기 : http://developer.android.com/training/material/index.html)


5. Notification UI 변경 - Headup Notification, Lock Screen Notification


6. Project Volta 적용(JobScheduler) 적용 - 배터리 성능 향상


7. Multiple Network 지원(ConnectivityManager) - 기존에는 Wifi 연결시 Wifi 또는 Mobile로 되어 있었음


8. 앱 사용 통계 제공(UsageStatsManager)

반응형

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

[Android] Android Build 전 과정  (0) 2016.04.22
[Android] Marshmello(Android OS 6.0) 특징  (0) 2016.04.22
[Android] Android의 구조  (0) 2016.04.22
[Android] GridLayout  (0) 2016.04.18
[Android] dp를 px값으로 변환  (0) 2016.04.14
반응형

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





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

+ Recent posts