일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Di
- mock
- ViewModel
- 코딩테스트
- UnitTest
- 컴포즈
- 유닛테스트
- 디자인패턴
- dagger2
- compose
- 제한함수
- 안드로이드
- 테스트의 장점
- MVVM
- rxjava
- 파이썬
- 코틀린
- Android
- git
- 깃
- 단위테스트
- 공격적 프로그래밍
- Room
- 안드로이드 디자인패턴
- 안정성
- Python
- Jetpack
- 자료구조
- Kotlin
- Observable
- Today
- Total
목록안드로이드 (41)
세상을 바꾸는 개발자
안녕하세요 헬창코딩입니다. 오늘은 delegate pattern에 대해서 알아보도록 하겠습니다 델리게이트 패턴은 어떤 기능을 자기 자신이 처리하는 것이 아니라 다른 객체에 delegate(위임) 시켜서 그 객체가 일을 처리하도록 하는 패턴이 바로 delegate pattern입니다. delegate pattern을 사용하는 이유가 무엇일까요?? delegate pattern의 필요성을 설명하기 전에 먼저 상속과 구성에 대한 내용을 이해해야 합니다. 흔하게 상속은 is - a의 관계라고 말하죠 예를 들어 동물이라는 클래스가 강아지라는 클래스의 부모 클래스라면 강아지 is 동물 관계가 성립을 하는 것이죠 이런 경우에는 클래스의 변수와 메서드를 상속받아서 새로 구현을 해줄 필요가 없습니다. 하지만 이러한 상속..
안녕하세요 ~ 헬창코딩입니다. 오늘은 안드로이드에서 자주 사용하는 날짜를 구하는 함수를 알아보겠습니다. 엄청 기초적인 내용이라서 꼭 숙지해야합니다 ㅎㅎ // 현재시간출력 var currentTime = LocalDateTime.now(); Log.d("dateTest", "1) 현재시간:: " + currentTime) // 년, 월, 일, 시, 분, 초 출력 var formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 ss초") Log.d("dateTest", "2) 현재시간(한글):: " + currentTime.format(formatter)) // 3일후 , 3달전 currentTime.plusDays(3) currentTime.minus..
안녕하세요~ 헬창코딩입니다. 오늘은 정말 간단한 에러 하나를 살펴볼 건데요~ 바로 SDK location not found 입니다 사실 이 에러는 안드로이드 공부를 시작한 지 얼마 되지 않으셨거나 프로젝트를 쭉~ 한 곳에서만 해오신 분들이 겪는 에러입니다. 말 그대로 SDK 경로를 찾을 수 없어서 발생하는 에러인데요~ 주로 맥 -> 윈도, 윈도 -> 맥으로 프로젝트를 옮길 때 자주 발생하는 에러입니다. 안드로이드 스튜디오에 내 프로젝트 디렉터리로 가셔서 local.properties 파일을 한번 찾아보세요! 존재하지 않거나 경로가 잘못되어있을 가능성이 큽니다. 경로가 잘못되어 있다면 내 PC에 맞게 변경해주시면 됩니다 보통 윈도의 경우 c:\Users\'사용자 이름'\AppData\Local\androi..
안녕하세요~ 헬창코딩입니다. 오늘은 publish 연산자와 connect 연산자에 대해서 알아보도록 하겠습니다~ ConnectableObservable은 Hot Observable을 구현할 수 있도록 도와주는 타입으로 아무 Observable 타입이나 publish 연산자를 이용하여 간단히 ConnectableObservable로 변환할 수 있습니다. (Hot Observable은 저번 시간 포스트를 참고해주세요) ConnectableObservable은 구독을 요청해도 Observable은 데이터를 발행하지 않습니다. connect() 연산자를 호출할 때 비로소 아이템을 발행하기 시작합니다. ConnectableObservable src = Observable.interval(1, TimeUnit.SE..
안녕하세요~ 헬창코딩입니다. 오늘은 Cold Observable과 Hot Observable의 차이에 대해서 알아볼까 합니다. Observable을 구현하는 방식에서 Observable과 Observer 사이에 미묘한 동작 차이가 있습니다. 이를 Cold Observable 과 Hot Observable이라고 부릅니다. Cold Observable은 지금까지 앞에서 다뤄 왔던 예제들처럼 Observable에 구독을 요청하면 아이템을 발행하기 시작합니다. 아이템은 처음부터 끝까지 발행이 되고, 임의로 종료하지 않는 이상 여러 번 요청에도 처음부터 끝까지 발행하는 것을 보장합니다. interval 연산자를 이용하여 1초마다 아이템을 발행하는 Cold Observable을 살펴보겠습니다. Observable ..
안녕하세요 ~ 헬창코딩입니다. 오늘은 Rxjava의 Observable의 형태중 Completable에 대해 알아보겠습니다. Completable은 아이템을 발행하지 않고, 단지 정상적으로 실행이 종료되었는지에 대해 관심을 갖습니다. 그러므로 Emitter에서 onNext()난 onSuccess() 같은 메서드는 없고 onComplete()와 onError()만 존재합니다. Completable.create(emitter -> { emitter.onComplete(); }).subscribe(() -> Log.d("log_test", "onComplete")); 결과 Completable.fromRunnable(() -> { }).subscribe(() -> Log.d("log_test", "onComp..
안녕하세요 헬창코딩입니다. 이번에는 Maybe에 대해서 알아보도록 하겠습니다. Maybe는 Single과는 비슷하지만 아이템을 발행하거나 발행하지 않을 수도 있다는 점에서 차이가 있습니다. 아이템을 발행할 때는 onSuccess(T)를 호출하고, 발행하지 않을 때는 onComplete()를 호출합니다. 그러므로 onSuccess()를 호출하는 경우 onComplete()를 호출할 필요는 없습니다. Maybe.create(emitter -> { emitter.onSuccess(100); emitter.onComplete(); //무시된다 }) .doOnSuccess(item -> Log.d("log_test", "doOnSuccess::" + item)) .doOnComplete(() -> Log.d("l..
안녕하세요 헬창코딩입니다. 오늘은 Observable의 다양한 형태에 대해서 알아보도록 하겠습니다!! Single SIngle은 Observable과는 다르게 단 하나의 아이템만을 발행하는 특징이 있습니다. 그러므로 저번 포스팅에서 알아보았던 just() 연산자에는 하나의 인자만을 취할 수 있습니다. Single.just("health coding").subscribe(t -> Log.d("log_test", "" + t)); create() 연산자를 사용하는 경우 Emitter를 이용하여 데이터를 발행합니다. 데이터를 단 한 번만 발행하므로 onNext()와 onComplete() 메서드를 호출하는 대신 onSuccess(T)로 두메 서드를 대체합니다. Single.create(emitter -> em..