본문 바로가기

분류 전체보기

(169)
[RxJava] 6장. 안드로이드의 RxJava 활용 3 - Thread 안드로이드는 기본적으로 싱글 스레드 모델. 따라서 처리하는 데 오래 걸리는 작업의 경우 별도 스레드로 분리하여 작업해야 한다. 뷰와 뷰 그룹의 스레드 관리 안드로이드의 뷰나 뷰 그룹은 UI 스레드(메인 스레드)에서만 업데이트할 수 있게 되어있다. 여러 스레드에서 동시에 UI를 업데이트할 때 발생할 수 있는 동기화 문제를 예방하기 위함. Looper와 Handler 클래스를 통해 일반 스레드에서 작업한 결과를 뷰에 업데이트 할 수 있다. * Looper와 Handler 클래스를 사용한 UI스레드 업데이트. Handler 객체가 스레드를 생성. 스레드는 Handler를 이용해 Message를 Messgae Queue에 넣음. UI스레드는 Looper 클래스를 이용해 Message Queue에 접근. Mess..
[RxJava] 6장. 안드로이드의 RxJava 활용 2 - RecyclerView 클래스 RecyclerView 클래스 리스트 뷰(ListView)의 장단점을 보완한 위젯. 한정된 수의 뷰를 유지해서 매우 효율적으로 스크롤 할 수 있는 큰 데이터 세트를 표시하기 위한 컨테이너. 서브 클래스인 LayoutManger를 이용하여 뷰를 정의, Adapter 클래스를 이용하여 DataSet에 맞는 ViewHolder 클래스를 구현할 수 있다. RecyclerView와 함께 사용하는 주요 클래스 Adapter : 데이터 세트의 아이템을 나타내는 뷰를 생성 ViewHolder : 재활용 뷰에 대한 모든 서브 뷰를 저장 LayoutManager : 뷰에 있는 아이템을 배치하고 관리 ItemDecoration : 아이템을 꾸미는 서브 뷰를 제어 ItemAnimation : 아이템을 추가, 정렬, 제거할 때..
[RxJava] 6장. 안드로이드의 RxJava 활용 1 - RxAndroid 소개 RxAndroid 소개 RxAndroid 기본 개념은 RxJava와 동일하다. Observable : 비즈니스 로직을 이용해 데이터를 발행 구독자 : Observable에서 발행한 데이터를 구독 스케줄러 : 스케줄러를 통해 Observable, 구독자가 어느 스레드에서 실행될지 결정. RxAndroid 장점 간단한 코드로 복잡한 병행 프로그래밍이 가능 비동기 구조에서 에러를 쉽게 다룸 함수형 프로그래밍 기법도 부분적 적용 가능 RxLifecycle 라이브러리 안드로이드와 UI 라이프 사이클을 대체한다기보다 구독할 때 발생할 수 있는 메모리 누수를 방지하기 위해 사용한다. 완료하지 못한 구독을 자동으로 해제한다. public class RxAndroidSample extends RxAppCompatActi..
[Android] 싱글톤(Singleton) 패턴 싱글톤 패턴 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴. 싱글톤 패턴을 사용하는 이유 고정된 메모리 영역을 얻어 사용하며, 최초의 한번만 인스턴스를 만들어 사용하기 때문에 메모리 낭비를 방지. Static 으로 인스턴스를 생성하기 때문에 어디에서든 참조할 수 있어 데이터 공유가 편리하다. 싱글톤 패턴의 문제점 싱글톤 인스턴스를 사용하는 다른 객체간의 결합도가 높아져 객체 지향 설계 원칙에 어긋나게 된다. 멀티 쓰레드 환경에서 동기화 처리 등의 문제가 발생할 가능성이 있다. * 멀티 쓰레드 환경에서는 경합 상태가 발생할 수 있다. 경합 상태란 동일한 자원을 2개 이상의 스레드가 동시에 이용하려고 경합하는 상태이다. 이 때, 인스턴스가 1개 이상 생성되는 경우가 발생할..
[Android] MVC, MVP, MVVM 기본 개념 MVC 패턴 Model + View + Controller Model : 데이터와 데이터를 처리하는 부분 View : UI Controller : 사용자의 입력(Action)을 받고 처리하는 부분 MVC 패턴의 동작 순서 Controller에 사용자의 입력(Action)을 받는다. Controller에서 Action을 확인하고 Model을 업데이트(조작)한다. Controller에서 해당 Data를 보여줄 View를 선택 View는 Model을 사용하여 화면에 보여준다. 이 때, Controller는 View를 선택만하고 업데이트를 시켜주지 않기 때문에 View는 Model을 이용하여 업데이트 하게 된다. View가 업데이트 하는 방법으로는 Model을 직접 사용한다. Model에서 VIew에게 Noti..
[Mockito] Mock 객체 란? Mock 이란? 실제 객체를 다양한 조건으로 인해 제대로 구현하기 어려울 경우 가짜 객체를 만들어 사용하는데, 이를 Mock 객체라 한다. Mock 객체가 필요한 경우. 테스트 작성을 위한 환경 구축이 어려운 경우. 테스트가 특정 경우나 순간에 의존적인 경우. 시간이 걸리는 경우 Mock에 대한 기본적인 분류 개념. 1. 테스트 더블 테스트를 진행하기 어려운 경우 대신해 테스트를 진행할 수 있도록 만들어주는 객체. Mock객체와 유사한 의미, 테스트 더블이 좀더 상위 의미로 사용. 2. 더미 객체(Dummy Object) 단순히 인스턴스화될 수 있는 수준으로만 객체를 구현. 객체가 필요할 뿐 객체의 기능까지는 필요하지 않은 경우에 사용. 3. 테스트 스텁(Test Stub) 더미 객체가 실제로 동작하는 ..
[RxJava] 5장. 스케줄러 스케줄러 비동기로 동작할 수 있도록 이용한다. subscribeOn, observeOn에 스케줄러를 지정하여 데이터의 흐름이 발생하는 스레드와, 처리된 결과를 구독자에게 전달하는 스레드를 분리할 수 있다. String[] data = {"1", "2", "3"}; Observable source = Observable.fromArray(data) .doOnNext(data -> Log.d("Original data = " + data)) .subscribeOn(Schedulers.newThread()) .observeOn(Schedulers.newThread()) .map(data -> "#" + data); source.subscribe(Log::i); CommonUtils.sleep(1000); //..
백준 알고리즘 https://blog.naver.com/fhskf94kr Heeg's Log : 네이버 블로그 Heeg's Log https://heegs.tistory.com/ blog.naver.com 백준알고리즘은 네이버 블로그에 작성된 것들이 있으므로 필요시 참고. 333개 문제. 코드 및 풀이.