개발 공부/안드로이드 (5) 썸네일형 리스트형 [RxJava] RxJava란 Reactive X (RxJava) RxJava는 옵저버 패턴을 기반으로 작동하기 때문에 자바 옵저버 패턴에 대한 선행학습은 필수적으로 이뤄져야 한다. 또한 람다식(Lambda Expressions)을 익혀둘 필요가 있다. 1. Observer pattern 옵저버 패턴에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고, 자동으로 내용이 갱신되는 방식으로 '일대다(one-to-many) 의존성'을 정의한다. 아래 UML을 통해 Observer pattern 구현 시, 클래스들의 관계를 알 수 있다. 1.1. Loose Coupling Loose Coupling 객체 간에 서로 상호작용이 이뤄지지만 서로에 대해 잘 모르는 상태를 말한다. 주제가 옵저버에 대해서 아는 것은 옵저버.. [SwipeRefreshLayout] child view가 한 개만 가능하다. 회사에서 swipeRefresh layout을 사용하던 중, 뷰가 보이지 않는 경험을 한 적이 있다. 도무지 왜 뷰를 그리지 않는지 알 수가 없어 안드로이드 개발자 공식 문서에서 단서를 발견할 수 있었다. Scroll view처럼 SwipeRefresh Layout 또한 child view가 하나여야만 한다. Scroll view의 경우, child view로 2개 이상 둘 경우 에러를 표시해주는데 SwipeRefresh layout은 정상적으로 빌드되어 문제를 찾는데 좀 걸렸다. 혹여나 SwipeRefrehs layout이 제대로 뷰를 그리지 못 한다면, 위와 같은 상황인지 살펴봐도 좋을 것 같다. [Service] 서비스 기본 개념 서비스 1. 서비스란 백그라운드에서 실행되는 프로세스 화면이 없는 액티비티 AndroidManifest.xml 에 로 명시되어 있어야 서비스가 정상 작동한다. 프로세스 분리가 아닌 기존 프로세스에서 돌아간다. 이런 이유로 thread에서 별도로 처리한다고 생각할 수도 있는데 그것도 아니다. 2. 서비스 생명주기 서비스의 생명주기는 onCreate(), onStartCommand(), onDestroy() 크게 세 단계를 거친다. 3. 서비스의 구현 MainAcitivty.class 에서 특정 메소드 호출 시, service 호출한다. Activity, Broadcast Receiver, Service, Content Provide와 같은 컴포넌트 간의 통신은 Intent 객체가 메신저 역할을 한다. p.. [data structure] 1. 자료구조란 자료구조(Data Structure) 1. 자료구조란 하나의 프로그램은 크게 원하는 산출물을 얻기위해 작성하는 명렁어(흔히 코드라 함)와 명령어를 실행하면서 사용하는 데이터(data)로 이루어진다. 즉, 프로그램이란 데이터를 표현하고, 데이터를 처리하는 것이다. 이러한 데이터를 효율저긍로 사용하도록 구조적으로 저장하고 관리하는 것이 자료구조이다. 이를 통해 데이터의 추가와 삭제, 검색이 효율적으로 이뤄진다. 자료구조를 종류별로 분류하면 다음과 같다. 자료 관리에는 다양한 자료구조에 맞게 알고리즘이 함께 개발되어 있다. 그러나 모든 상황에 최적화된 유일한 자료구조와 알고리즘은 없다. 상황에 맞게 채택해야 한다. 2. 컬렉션 프레임워크(Collection Framework) 2.1. 컬렉션 프레임워크란 통상.. [AsynTask] 기본 개념과 구현 방법 [170612] AsyncTask 1. AsyncTask 1.1. AsyncTask 개념 재활용이 가능한 Thread 객체와 달리 재활용이 불가한 AsnycTask 객체 추상 클래스이기 때문에 메소드를 implements 하여 로직을 작성 한정적인 작업(예를 들면 A작업을 10 번 수행한다.) 에 주로 사용되며, 특히 네트워크를 통해 서버의 데이터를 가져올 때 자주 쓰는 객체임 Thread, Handler, Message 등을 모두 구현해야 하는 Thread 객체와 달리 코드 구현 관점에서는 간단한 편임 1.2. AsyncTask 구현 new AsyncTask(){ // ======== [Generic 위치에 따른 인자타입] ======== // Params = doInBackGround(); 의 인자타.. 이전 1 다음