JUST DO IT PROJECT

[Android] 안드로이드 개발 기초 요약 및 키워드 모음 본문

개발

[Android] 안드로이드 개발 기초 요약 및 키워드 모음

웨일.K 2020. 4. 4. 17:18
반응형

안드로이드 개발을 처음 접하시는 분이나 다시 공부하려는 분들을 위한 기초 요약입니다. 전체적인 흐름을 훑어보고 필요한 부분을 찾기 위한 키워드 위주로 정리되어 있습니다. 아주 간단하게만 요약되어 있으므로 상세 내용을 검색해 예제와 함께 보기를 추천드립니다.

* Out of Date 정보가 있을 수 있습니다. *

1. Android란?

  • 안드로이드는 오픈 핸드셋 얼라이언스(OHA)에서 모바일 기기의 공개표준을 개발하기 위해 결성
  • 안드로이드는 리눅스 커널에서 동작하며 OpenGL에 대응하는 그래픽 엔진을 탑재하여 카메라, 터치 스크린, GPS, 가속센서 등의 하드웨어를 운용가능
  • (?)안드로이드 응용프로그램은 Android Studio를 이용해 개발 가능하며 ART(Android Runtime)라이브러리로 작동한다. (** 이전에는 JDK, Eclipse, Android SDK로 개발하였고, 고유 virtual machine인 Dalvik에서 작동하였음. DVM, JIT, ART, AOT 참고)
  • (?)이클립스는 ADT 플러그인을 통해 안드로이드 프로젝트 생성, 디버깅 가능
  • (?)에뮬레이터로 AVD제공

2. Android 기본 개념

  • 안드로이드 어플리케이션(이하 안드 앱)의 구성요소: Activity, Intent, Service, Content Provider
  • 안드로이드 앱은 컴포넌트들을 느슨하게 결합함. Manifest.xml 파일에 컴포넌트들의 상호작용을 정의함.
  • Manifest.xml: 안드 앱 하나당 1개의 Manifest 파일 존재. 특정형태의 xml 파일
  • 액티비티(Activity)의 상태(state): 활성(Active), 일시정지(Pause), 중지(Stop)
  • 액티비티의 생명주기(Life Cycle): onCreate() -> onStart() -> onPause() -> onStop() -> onDestroy()

3. User Interface (UI, 사용자 인터페이스)

  • 뷰 View: visual interface 요소를 위한 기본 사용자 인터페이스 클래스
  • 뷰그룹 ViewGroup: 뷰 클래스의 확장(extension) 여러 자식뷰(children view)들을 담을 수 있음.
  • Activity: 앱을 구성하는 각각의 화면
  • Layout의 종류: FrameLayout, LinearLayout, RelativeLayout, TableLayout, AbsoluteLayout

4. View

  • 뷰는 xml 속성과 메소드 모두 상속받아 쓸 수 있음.
  • 메뉴 menu: 화면 공간 희생 없이 기능을 노출할 수 있음.
  • 각 액티비티는 자신만의 메뉴를 가질 수 있음.
  • 메뉴 종류: Option, Context, Popup

5. Intent

  • 인텐트 Intent: 액티비티와 서비스를 부를 때 사용하는 메시지 객체
  • 인텐트 객체 Intent object: 하나의 정보 묶음
  • Intent Resolution: 필요한 정보를 모아 대상을 찾는 작업
  • Linkify: 패턴 매칭, TextView 내에 하이퍼링크 자동 생성

6. Adapter & Dialog

  • Adapter: 데이터와 UI를 바인딩 해주는 클래스
  • CursorAdapter: 커서로부터 데이터를 selection widget에 공급. ContentProvider가 제공하는 selection widget에 연결할 때도 사용
  • SimpleAdapter: data를 xml layout 파일에 지정된 view 형태로 표시하는데 사용
  • ActivityAdapter, ActivityIconAdapter: 특정 인텐트 발생시 실행될 액티비티의 이름이나 아이콘 목록
  • ArrayAdapter: array, java.util.List에 저장된 데이터
  • Dialog: 질문에 답하거나 무언가 선택하거나, 실행될 액션을 승인할 때, 경고/에러 메시지를 읽을 때 사용됨.
  • AlertDigalog: 메시지를 보여준 후 사용자 행동에 따라 반응함.
  • 토스트 Toast: 짧게 메시지 표시 후 2~3초 후에 사라짐. 기본적으로 중앙 하단에 표시되지만 API 이용해 위치 제어 가능.

7. Resources

  • resources: 앱 빌드 시 컴파일 된 파일 내에 존재하는 코드가 아닌 외부 파일들
  • xml, PNG, JPEG 등의 자원
  • 소스코드, 리소스, xml -> 바이너리로 컴파일해서 보다 효율성 높임
  • 문자열은 storage 형식으로 압축
  • Resource 클래스로 제어. Context.getResource()로 사용
  • 리소스는 올바를 소스트리에 넣어주어야 함.
  • 인터넷 리소스에 접근하기 위해서는 Manifest에 INTERNET user-permission 노드를 추가해주어야 함

8. Data - Shared Preference

  • 안드로이드의 데이터 지속 기법: 공유환경설정(Shared Preferences), 파일, SQLite, 컨텐츠공급자
  • 데이터 경량 메커니즘:
    • Shared Preference: 같은 context 내에서 실행중인 앱 컨포넌트들 간에 공유 가능한 key-value 맵.
    • onSaveInstanceState Handler: 액티비티가 리소스 부족으로 종료될 때 UI 상태를 지속하게 해줌.
    • Bundle 매개변수: 액티비티의 instance 값을 저장할 때 사용하는 맵. onCreate, onResumeInstanceState에 전달됨, 액티비티가 예상치 못하게 재시작된 이후에도 동일한 UI 제공해주기 위해 사용.
  • 앱 데이터로 Shared Preference 이용하고 DB를 이용하는게 좋지만 직접 파일을 이용할 때도 있음.
  • 앱 외부 리소스, 정적파일은 /res/raw 폴더에 위치시켜 사용
  • 앱간 데이터 공유는 컨텐츠 프로바이더 이용

9. Data - SQLite

  • 오픈소스, 표준 준수, 경량, 단일계층
  • SQLite DB는 하나의 파일임.(임베디드 데이터베이스는 대부분 그럼)
  • Constant Interface: DB 설명하는 상수를 저장해둠
    • 각 이벤트는 events 테이블 안의 행으로 저장. 각 행에는 _id, time, title 열이 있음
    • 보통 _id 는 primary key. BaseColumns 인터페이스에 정의.
  • SQLiteOpenHelper:
    • EventData 라는 헬퍼클래스를 만들어 DB 응용 프로그램 구현
    • SQLiteOpenHelper 클래스 확장해서 생성자와 두개의 method 구현
    • (최초) DB 접근시도 -> SQLiteOpenHelper는 DB 없음을 감지, onCreate() 호출->DB 생성, CREATE TABLE 구문 실행

10. GPS

  • 소스 따라 해상도가 다름. 기본 10~25미터 오차
  • LBS 현재위치 찾는 서비스. GPS와 구글 셀기반 위치기술 이용
  • Criteria 클래스: 정확도, 전력 사용, 비용, 고도, 속도, 범위 값 리턴하는 공급자 설정
  • GPS는 전력 소모개 꽤 큼. 업데이트가 일어나지 않게 구현할 필요가 있음

11. 위치기반 서비스

  • 근접경보: 사용자가 특정 위치로 이동하거나 특정 위치를 벗어날ㄷ 때 앱이 반응하게 하는 것
  • 역방향조회의 정확도, 세분화정도는 지오코딩DB 데이터 품질에 달림
  • 순방향조회: 장소이름의 모호함을 피할 수 있도록 가능한 지역 locale 지정하는게 좋음
  • 프로젝션 클래스는 위도, 경도, 좌표, x/y 화면 픽셀 좌표값을 바꿀 수 있게 해줌.

12. Service

  • 서비스: 백그라운드에서 실행됨. 비활성 Activity보다 우선순위 높음
  • 사용자 입력에 직접 의존하지 않는 동작을 규칙적/연속적으로 수행시 쓰면 좋음
  • 백그라운드 스레드(thread) 필요성: 시간이 많이 걸리는 작업일 경우 다른 액티비티, 컴포넌트들을 다 블락할 수 있기 때문에
  • 토스트: 일시적 Dialog

13. GTalk

  • XMPP 기반, 구글 계정 요구, P2P 통신을 위해 서버와 소켓 연결 유지
  • GTalk 서비스 이용 위한 라이브러리 사용 필요
  • SMS 권한 설정 필요

14. Media

  • 미디어 API: jpeg, png, mpeg4, mp3, bitmap 등 미디어 포맷 지원

  • 카메라 이용:

    <uses-permission android:name="android.permission.CAMERA"/>
  • 센서 이용

    • 가속도 센서: 단위시간당 속도변화 검출
    • 방향 센서: yaw(머리) 제공, 나침반, pitch, roll 측정

15. 기타 통신 권한

  • 전화, 통화 상태 읽기 권한:

    <uses-permission android:name="android.permission.REAP_PHONE_STATE"/>
  • Bluetooth

    <uses-permission android:name="android.permission.BLUETOOTH"/>
  • Network WiFi

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
  • WiFi 관리

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

16. 기타

  • Permission: 악의적인 앱들로부터 보호. 민감한 정보 접근, 외부 통신채널, HW 리소스 남용 예방.
  • AIDL: Android Interface Definition Language, 서비스와 앱 컴포넌트간 통신 지원
  • Rich UI: 트윈드 애니메이션, SurfaceView 로 구축
반응형

'개발' 카테고리의 다른 글

[Java] 객체지향 프로그래밍 기초 요약  (0) 2020.04.05
re:View 1st Impact meetup  (1) 2017.03.23