전체 글
-
Navigation Component(2)Android 2021. 5. 19. 19:37
대상(Destinations) 이동 대상(Destinations)으로 이동하는 것은 NavController 객체를 사용하여 실행되며 NavController는 NavHost내에서 앱 탐색을 관리한다. Fragment, Activity 또는 View의 NavController를 가져오려면 다음 메서드 중 하나를 사용한다. (Kotlin기준) Fragment.findNavController() View.findNavController() Activity.findNavController(viewId: Int) ID를 사용한 이동 navigate(int) 는 Action 또는 대상(Destinations)의 리소스 ID를 사용합니다. 버튼의 경우는 Navigation 클래스의 createNavigateOnCl..
-
Navigation Component(1)Android 2021. 5. 18. 16:02
Android Jetpack의 Navigation Componet는 단순한 버튼 클릭부터 좀 더 복잡한 패턴(앱바, 탐색 창)에 이르기까지 여러 가지 탐색을 구현하도록 도와준다. 1. Navigation Component 장점 fragment transactions 자동 처리 올바른 up, back 처리 animations 및 transactions에 표준화된 리소스 제공 딥 링크 구현 및 처리 추가 작업 없이 탐색 UI 패턴(예: 탐색창, 하단 탐색 메뉴) 구현 Safe Args Android Studio에서 앱의 탐색 흐름을 시각화하고 수정 가능 2. Navigation 구성요소 Navigation graph 사용자가 앱에서 선택할 수 있는 가능한 모든 경로를 정의하는 XML Resource이다. 지..
-
SubjectReactiveX 2021. 5. 15. 06:54
Subject는 Observable의 속성과 Observer의 속성을 모두 가지고 있다. 즉 데이터를 발행할 수도 있고, 데이터를 받아서 처리할 수도 있다. AysncSubject AsyncSubject는 Observable로부터 발행된 마지막 값(만)을 발행하고 Observable의 동작이 완료된 후에야 동작한다. (만약, Observable이 아무 값도 발행하지 않으면 AsyncSubject 역시 아무 값도 발행하지 않는다.) AsyncSubject는 맨 마지막 값을 뒤 이어 오는 Observer에 전달하는데, 만약 Observable이 오류로 인해 종료될 경우 AsyncSubject는 아무 항목도 발행하지 않고 발생한 오류를 그대로 전달한다. fun main(){ val observable = Ob..
-
SurfaceViewAndroid 2021. 5. 13. 17:39
1. Surfaceview 개념 Android Application에서 View가 그려지는 작업은 메인 스레드(Main Thread)에서 실행되지만 동영상이나 Camera Preview와 같이 그려지는 양이 많거나 빠른 화면 변화를 원한다면 SurfaceView를 사용해야 한다. SurfaceView의 내용은 Main Thread가 아닌 다른 Thread를 통해서 그려지기 때문이다. SurfaceView는 아래의 그림과 같이 Window의 아래쪽에 위치, Window를 뚫어서(punched) 자신이 보여지게끔 한다. 만일 해당 Window위에 다른 View가 있는 경우는 블렌딩(Blended)이 되어 보여지게 된다. 사실 안드로이드 운영체제의 정책상 여러 스레드가 같은 자원에 동시에 접근했을 때 일어나는..
-
RxAndroidReactiveX 2021. 5. 2. 16:01
RxJava에 최소한의 클래스를 추가하여 Android Application에서 쉽고 간편하게 사용하게 만든 라이브러리이다. 안드로이드에서 사용할 수 있는 Reactive API 및 라이브러리 목록은 https://github.com/Reactivex/Rxandroid/wiki 에서 확인할 수 있다. 환경 설정 allprojects { repositories { maven { url "https://oss.jfrog.org/libs-snapshot" } } } dependencies { implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' // Because RxAndroid releases are few and far between, it is recommen..
-
[RxJava] SchedulerReactiveX 2021. 5. 1. 10:49
스케줄러 개념 스케줄러는 Observable만큼이나 중요한 RxJava의 핵심요소이다. Observable 연산자 체인에 멀티스레딩을 적용하고 싶다면, 특정 스케줄러를 사용해서 연산자(또는 특정 Observable)를 실행하면 된다. SubscribeOn 연산자는 다른 스케줄러를 지정해서 Observable이 처리해야 할 연산자들을 실행시킨다. ObserveOn 연산자는 Observable이 옵저버에게 알림을 보낼때 사용할 스케줄러를 명시한다. 스케줄러를 별로도 지정하지 않으면 main 스레드에서 동작을 실행한다. 아래 그림이 보여주듯, SubscribeOn 연산자는 Observable이 연산을 위해 사용할 스레드를 지정하며, 연산자 체인 중 아무 곳에서 호출해도 문제되지 않는다. 하지만, Observe..
-
[RxJava] Single, MaybeReactiveX 2021. 5. 1. 10:14
Single Single은 Obvservable의 한 형태이지만, 항상 한 가지 값 또는 오류 알림 둘 중 하나만 배출한다. Single을 구독할 때는 Observable을 구독할 때 사용하는 세 개의 메서드(onNext, onError, onCompleted) 대신 다음의 두 메서드만 사용할 수 있다. onSuccess - Single은 자신이 배출하는 하나의 값을 이 메서드를 통해 전달한다. onError - Single은 항목을 배출할 수 없을 때 이 메서드를 통해 Throwable 객체를 전달한다. Single은 발행과 동시에 종료하며 종료시 onSuccess가 호출된다. Observable과 마찬가지로, Single도 다양한 연산자들을 제공한다. 이 중 어떤 연산자들은 Observable과 Si..
-
[RxJava] Operators(연산자)ReactiveX 2021. 4. 30. 11:15
ReactiveX를 지원하는 언어별 구현체들은 다양한 연산자들을 제공하는데, 이 중에는 공통적으로 제공되는 연산자도 있지만 반대로 특정 구현체에서만 제공하는 연산자들도 존재한다. 연산자 체인 거의 모든 연산자들은 Observable 상에서 동작하고 Observable을 리턴한다. 연산자 체인에서 각각의 연산자는 이전 연산자가 리턴한 Observable을 기반으로 동작하며 동작에 따라 Observable을 변경한다. 먼저 실행된 연산자가 리턴한 Observable을 기반으로 다음 연산자가 동작하기 때문에 Observable의 연산자 체인은 원본 Observable과 독립적으로 실행될 수 없고 순서대로 실행되어야 한다. 카테고리별 연산자 Observable 생성 - 새로운 Observable을 만드는 연산자..