어흥
[안드로이드] 기본 개념 본문
1. MVC 패턴
- Model, View, Controller
- Model: 프로그램이 작업하는 세계관의 요소들을 개념적으로 정의한 것 (DTO, DAO로 분류된다)
- View: 사용자가 보는 화면에 입출력 과정 및 결과를 보여주기 위한 역할을 수행한다
- Controller: 도메인 객체들의 조합을 통해 프로그램의 작동 순서나 방식을 제어한다
- MainActivity -> View, Data(Item) -> Model, Adapter -> Controller
2. 컴포넌트
- Activity: UI를 관리하고, 사용자의 다양한 이벤트를 처리하는데 사용된다
- Service: 화면에서 보이지 않고, 백그라운드에서 처리하는데 사용된다(Ex. 멜론)
- Broadcast Receiver: 안드로이드에서 발생하는 특정 브로드캐스트 메세지를 처리하는데 사용된다
- Content Provider: 앱 사이의 데이터의 공유를 위한 인터페이스를 제공한다(Ex. 주소록 사용, 앨범 사용)
3. 안드로이드 액티비티 생명주기
- onCreate(): 가장 처음에 한번만 호출
- onStart(): 시작할때 호출
- onPause(): 화면에는 보이지만 다른 액티비티를 사용하고 있는 상태(포커스를 얻지 못한 상태)
- onStop(): 화면에도 보이지 않을 때
- onRestart(): onStop()이후에 액티비티가 다시 호출될때(ex. 홈버튼 눌렀다가 앱 재실행할때)
- onResume(): 화면이 포커스를 얻었을 때 호출(ex. 사용중이던 앱 목록을 띄었을 때, 포커스를 받지 않는 액티비티 -> 확신은 없습니다만...)
- onDestroy(): 액티비티가 종료되기 직전에 호출 (이후에 finish method 실행)
4. Fragment 생명주기
- onAttach() -> onCreate() -> onCreateView()-> [onPause() -> onStop() -> onDestroyView()] : 화면이 포커스를 잃었을 때 -> [다시 해당 Fragment의 부모 Activity가 호출되고 해당 Framgent가 Focus를 얻었을 때, onCreateView()로 돌아온다] -> onDestroy() -> onDetach()
5. Manifest
- Application 태그: 앱 아이콘, 이름 정의
- Activity 태그: 액티비티 클래스명과 이름을 정의, Intent filter를 이용하여 Splash와 같은 효과를 줄 수 있다
- Service/Receiver/Provider 태그: 서비스, 리시버, 프로바이더에 대한 내용 정의
- Permission 태그: 앱에서 필요한 권한을 정의
6. Context (Abstract 클래스)
- 어플리케이션에 관하여 시스템이 관리하고 있는 정보에 접근
- 안드로이드 시스템 서비스에서 제공하는 API를 호출할 수 있는 기능
- ActivityManagerService가 어플레이션 정보를 관리한다(Key, value 형식) -> ActivityManagerService 통해서만 어플에 관련된 정보에 접근 가능
[결론]
- 자신이 어떤 어플을 나타내고 있는지 알려주는 ID 역할
- ActivityManagerService에 접근할 수 있도록 하는 통로 역할
7. 코틀린의 장점
- NullPointerException 다루는데 용이
- Collections에 filter, map, foreach같은 고차함수 적용가능
- 서버에서 수신받은 데이터를 컬렉션으로 다룰 일이 많다 -> 코드의 간결하고 안전하게 만드는 데 도움된다
- 자바와의 호환성이 좋고, 기존의 라이브러리, 프레임워크를 제약없이 사용 가능
- Getter, Setter를 번거롭게 쓸 필요 없이, 한방에 정리 가능하다
8. RecyclerView
- 외부 라이브러리 추가 필요(Gradle에 추가)
- ListView의 진화로, 여러 컴포넌트들이 데이터를 표현하기 위해 같이 사용될 수 있다
- ViewHolder는 각 RecyclerView에 1개 이상으로 존재하며, 각 ViewHolder는 어댑터에 의해 관리되며 이 객체는 RecyclerView.Adapter 객체다
9. Gradle
- 정의: 빌드 시스템, 프로그램의 소스 코드를 빌드하는 빌드 도구 중 하나이다 -> 응용 프로그램 개발을 시작하기 전에 설치해야 한다
- 플러그인 기반 시스템으로 매우 유연하다
참조한 블로그:
- https://jw910911.tistory.com/18
- https://arabiannight.tistory.com/entry/272
'Android' 카테고리의 다른 글
[안드로이드] OAuth 2.0 (0) | 2020.05.28 |
---|