분류 전체보기 (171) 썸네일형 리스트형 [Kotlin] 1장. 코틀린 시작하기 Kotlin 공부 시작. 사용 교재 아주 기본적인 내용은 건너뛰고 정리하여 게시글을 작성할 예정. 책에 나와있는 개발 툴을 사용하여 진행. JetBrains사의 IntelliJ IDEA를 사용. https://www.jetbrains.com/idea/download/#section=windows Download IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains Download the latest version of IntelliJ IDEA for Windows, macOS or Linux. www.jetbrains.com 1장은 개발환경 세팅에 대한 내용만 있으므로, 필요하다 생각되는 것만 작성하도록 한다. Tool > Kotlin.. [Android] Room 라이브러리 Room Library AAC 중 하나 SQLite DB를 보다 쉽게 사용할 수 있도록 도와주는 ORM(Object Relational Mapping) 라이브러리 Room의 특징 컴파일 도중 SQL에 대한 유효성 검사 상용구 코드(Boiler Plate Code) 없이 매핑 가능 LiveData와 RxJava의 Flowable을 위한 observation으로 생성하여 동작 가능. Room의 구성 요소 Database : 데이터 베이스 객체. 객체를 생성하는 비용이 크기 때문에 Singleton으로 구현하는 것이 좋다. Entity : Database 내의 테이블 Dao(Data Access Object) : 데이터 접근 객체. DB를 통해 수행할 작업(CRUD)을 함수로 정의한 클래스로 interface.. [Android] ViewModel 기본 개념 ViewModel ViewModel이란 Android Jetpack의 구성요소 중 하나. MVVM(Model - View - ViewModel) 디자인 패턴으로부터 파생됨. AAC ViewModel 이라고 부르기도 한다. ViewModel의 특징 라이프 사이클을 고려하여 UI 관련된 데이터를 저장, 관리하기 위해 설계. 화면 전환과 같이 설정이 변경되는 상황에서도 Data를 유지시킨다. Activity가 끝날 때까지 사라지지 않고, View의 생명주기와 별개로 흘러간다. ViewModel은 Activity 생명주기 외부에 존재하기 때문에 UI 컨텍스트를 ViewModel에 저장한다면 Memory Leak을 발생시키는 원인이 될 수 있다. ViewModel의 생명주기 일반적으로 onCreate()를 처음 .. [Android] LiveData 기본 개념 LiveData 개요 LiveData는 Data의 변경을 식별할 수 있는 데이터 홀더 클래스. 일반 클래스와 달리 LiveData는 수명 주기를 인식하며, 생명 주기가 활성화되어있는 상태에서만 Observer를 업데이트한다. LiveData 객체에 LifecycleOwner와 함께 옵저버를 등록할 수 있다. LiveData는 Observer가 STARTED, RESUMED 상태일 때 활성화되어있는 상태로 인식한다. LiveData가 가지고 있는 데이터에 변화가 일어날 경우, Observer 객체에 변화를 알려주어 onChanged() 이벤트를 발생시킨다. LiveData는 2개의 함수를 가지고 있다. onActive() : 활성화된 Observer수가 0에서 1로 바뀔 때 호출. onInactive() .. [RxJava] 8장. 테스팅과 Flowable - Flowable 클래스 Flowable 클래스 RxJava 2.x에 새로 도입된 클래스. 배압(backpressure) 이슈를 위해 별도 분리된 클래스. Observable 클래스의 성능을 향상시키기 위해서 도입된 클래스로, 기존의 Observable 클래스에서 배압 처리가 불필요한 경우, 초기 로딩에 약간의 오버헤드가 존재했는데 이것을 제거함. Flowable의 활용은 기본적으로 Observable과 동일하다. toObservable(), toFlowable() 함수를 사용하여 Observable과 Flowable을 서로 변환한다. Flowable.just("Hello flowable").subscribe(System.out::println); Flowable.fromCallable(() -> { Thread.sleep(10.. [RxJava] 7장. 디버깅과 예외 처리 3 - 흐름 제어 흐름 제어 Observable이 데이터를 발행하는 속도와 옵서버가 데이터를 받아서 처리하는 속도 사이의 차이가 발생할 때 사용하는 함수. 주로 데이터를 받아서 처리하는 속도가 발행되는 속도보다 느릴 경우에 발생한다. sample() 함수 특정 시간 동안 가장 최근에 발행된 데이터만 걸러준다. 즉, 아무리 많은 데이터가 들어와도 해당 시간 구간의 마지막 데이터만 발행하고 나머지는 무시한다. String[] data = {"1", "2", "3", "4", "5"}; // 시간 측정용 CommonUtils.exampleStart(); Observable source100 = Observable.fromArray(data) .take(4) .zipWith(Observable.interval(100L, Time.. [RxJava] 7장. 디버깅과 예외 처리 2 - 예외 처리 예외처리 RxJava에서는 try-catch 문을 사용해서 예외처리를 할 수 없다. onError 이벤트는 데이터 흐름이 바로 중단되므로, Out Of Memory 같은 중대한 에러가 발생했을 때만 활용. onErrorReturn() 함수 에러가 발생했을 때 내가 원하는 데이터로 대체하는 함수. onError 이벤트는 발생하지 않는다. String[] val = {"1", "2", "#"}; Observable source = Observable.fromArray(val) .map(data -> Integer.parseInt(data)) .onErrorReturn(e -> { if(e instanceof NumberFormatException) { e.printStackTrace(); } return -.. [Android] 데이터 바인딩 (Data Binding) 기본 사용 방법 DataBinding 적용 최소 사항 Android 2.1 (API 7, Android Nougat) 이상 안드로이드 누가의 경우, 19년 10월을 기준으로 지원 중단. 갤럭시 S6이상의 기기에서 사용 가능. Android Plugin for Gradle 1.5.0-alpha1 이상 Android Studio 1.3 이상 DataBinding 사용 설정 // build.gradle (Module:app) android { ... dataBinding { enable = true } ... } gradle에서 dataBinding에 대한 enable 옵션을 true로 설정해주기만 하면 된다. 위의 옵션으로 설정을 하면, 컴파일러가 컴파일 시 자동으로 필요한 바인딩 클래스를 작성해 주기 때문에 따로 impl.. 이전 1 ··· 16 17 18 19 20 21 22 다음 목록 더보기