Android 99

RxJava - Observable과 Observer 의 차이

둘다 자주 나오지만 이름도 비슷한게 정확한 차이점에 대해 궁금해졌다. 그래서 여기저기 찾아다니며 알아봤는데 차이점은 아래와 같다. Observable은 int, String 등등 여러 형태의 데이터를 관찰할 수 있는 즉 Observer 가 사용할 수 있는 형태로 바꾸는 역할을 한다. Observer 는 Observable 로 만들어진 데이터를 전달받고 그 데이터로 특정 행동을 취하는 역할을 한다. 아래 그림을 보면 더 이해하기 편하다. Observable observable = Observable .just("test1", "test2") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); observable.subscrib..

RxJava - Observable을 제외한 다른 생산자들

전 포스팅에서는 Observable에 대해서 알아봤다. 기본적인 생산자였는데 Observable 0개에서 n개의 데이터를 전달하는 생산자다. 기본적인 생산자로 단건(0 or 1)이 아니면 대부분 Observable을 쓴다. observer 방식으로 consumer 등록시 Observer를 구현해 전달한다. consumer 방식을 사용할 시 onNext, onComplete, onError와 onSubscribe가 있다. val observer = Observable.just(11, 12, 13) .map { if (it == 12) throw IllegalStateException() // 12에 에러 else it } observer.subscribe( { println("onNext $it") }, ..

RxJava - 시작하기

//RxJava implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' implementation 'io.reactivex.rxjava3:rxjava:3.0.7' 안드로이드 기준으로 설명하겠다. 직접 공부하고 쳐보면서 포스팅 하고 있어서 Java와 Kotlin 예시가 같이 나오는건 양해해주시길 바란다. 언어만 다를뿐 사용법 자체에는 차이가 없다. Rxjava 라이브러리를 사용하기 위해 build.gradle 에 위의 내용을 입력하자. 일단 시작하기에 앞서 RxJava에서 기본적으로 이해 해야하는것들에 대해 먼저 알아보자. 1. Observable 2. Subscriber Observable 은 데이터 스트림을 만드는 요소. Subscriber 은 데이터 스트림을 ..

RxJava , RxKotiln 이란?

Rx는 뭔가? 바로 말하자면 Reactive Programming 이다. 반응형 프로그래밍이다. 반응형 프로그래밍이라는 단어가 왜 나오게 됐을까 기존 프로그램은 한번 변화가 있고나서 그것을 다시 알려주려고 부가적인 처리를 해줘야했다. 간단한 동작임에도 여러가지 처리를 해줘야해서 개발자 입장에서 피곤한 점도 많고 예상치 못한 문제가 발생할 위험도 존재했다. 이를 해결하기 위해 나온 프로그래밍 방식이 반응형 프로그래밍인데 프로그램이 자신의 주변과 끊임없이 상호작용하며 프로그램 자체가 주도해서 값이 변화하는것이 아닌 환경에 의해 변하면 이벤트를 받아 반응하는 프로그램을 의미한다. 당장은 와닿지 않을 수 있지만 이 Rx 관련 포스팅을 읽다보면 감이 올거라고 생각한다. 한마디로 즉, 근래에 떠오르고 있는 Reac..

레이아웃을 이미지로 변경하고 pdf로도 저장하기

https://kwon8999.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83-PDF-%EB%B3%80%ED%99%98 안드로이드 레이아웃 PDF 변환 안드로이드 레이아웃 PDF파일로 변환 방법입니다. itextpdf 라는 라이브러리를 이용하여 간단하게 변환 시킬것입니다. 기본적으로 돌아가는 구조는 현재 레이아웃을 jpg 이미지로 변환하여 저장한 kwon8999.tistory.com 권한 필요

Android 2021.05.13

안드로이드 라이프사이클(android lifecycle)

생명주기(Lifecycle) 액티비티 생명주기란 액티비티가 생성되고, 정지되고, 재생되고, 종료되는 등의 상태 변화와 그에 따른 콜백 메서드를 총칭한다. 안드로이드 개발자라면 액티비티의 생명주기를 알아야한다. 안드로이드를 처음 공부하면, Activity를 생성하고 layout과 연결하는 작업부터 시작하기 마련이다. 화면 단위에 해당하는 Activity들은 생성되고, 파괴되고, 다른 Activity에 가려지기도 한다. 간단한 화면 하나를 구현하는 작업이라면 이러한 Activity의 생명주기에 대해서 자세히 알지 못해도 별다른 문제가 없다. 하지만 백그라운드에서 어떤 다운로드 작업이 진행되고 있다고 생각해 보자. 다운로드 도중에 Activity가 갑자기 종료된다면? 이 작업은 화면과 관련 없이 돌아가고 있기..

Android 2021.05.01

코틀린 프래그먼트 데이터 전달

출처 : magicalcode.tistory.com/40 프래그먼트(Fragment) 는 하나의 액티비티에 각 화면을 분할, 독립적인 코드로 구성하는 것을 말합니다. 그래서 액티비티와 프래그먼트, 프래그먼트와 또 다른 프래그먼트끼리 통신을 할 필요가 있습니다. 어떻게 할 수 있을까요? 바로 시작합니다! 액티비티 프래그먼트 A프래그먼트 액티비티 B프래그먼트 데이터 전달하기 1. 프래그먼트 띄우기 데이터를 전달하기 위해서 간단한 앱을 만들겠습니다. 이미 구성하신 분들은 2번부터 봐주세요~ 아래와 같이 프래그먼트 클래스 및 .xml 를 먼저 만들어주세요. 그리고 각각의 레이아웃을 만들어 주시는데요. 저는 간단히 영화 포스터를 보여주고 버튼을 누르면 상세화면으로 바뀌도록 구성했습..

Android 2021.04.25

커스텀 객체를 sharedpreferences 에 저장하고 불러오기

1. String 형식으로 저장 할때 public void setStringArrayPref(Context context, String key, ArrayList values) { SharedPreferences prefs = context.getSharedPreferences("key", MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); JSONArray a = new JSONArray(); for (int i = 0; i < values.size(); i++) { a.put(values.get(i)); } if (!values.isEmpty()) { editor.putString(key, a.toString()); } else { edit..

Android 2021.04.16