전체 글
-
RxAndroid (1)RxJava 2023. 3. 4. 02:03
6장. 1 - RxAndroid 소개 RxAndroid 소개 RxAndroid Observable : 비즈니스 로직을 이용해 데이터를 발행 구독자 : Observable에서 발행한 데이터를 구독 스케줄러 : 스케줄러를 통해 Observable, 구독자가 어느 스레드에서 실행될지 결정. 기존 안드로이드 문제점 안드로이드의 비동기 처리 및 에러 핸들링 수많은 핸들러와 콜백 때문에 발생하는 디버깅 문제 2개의 비동기 처리 후 결과를 하나로 합성하는 작업 이벤트 중복 실행. RxAndroid 장점 간단한 코드로 복잡한 병행 프로그래밍이 가능 비동기 구조에서 에러를 쉽게 다룸 함수형 프로그래밍 기법도 부분적 적용 가능 RxLifecycle 라이브러리 안드로이드와 UI 라이프 사이클을 대체한다기보다 구독할 때 발생..
-
Reactive - 디버그와 예외 처리RxJava 2023. 3. 4. 02:00
7장. 디버깅과 예외처리 지금까지 배운 Observable와 각종 리액티브 연산자를 활용하면 무엇이든 만들 수 있다고 한다고 해요. 하지만 상용 서비스처럼 간단하지 않고 복잡한 코드 로직들은 예상하지 못한 각종 버그와 오류가 발생할 가능성이 많아서 디버깅과 예외처리를 통해 보다 안정성이 있는 코드를 구현해야 합니다. 때문에 디버깅과 예외 처리는 필수로 적용해야 합니다. 디버깅 “함수형 프로그래밍은 함수의 부수효과를 없도록 하는 것이 원칙이지만 doOnXXX() 계열 함수는 오히려 부수 효과를 일으켜서 내가 작성하는 코드가 문제없는지 알아볼 수 있게 합니다.” 😒❓ doOnXXX() 계열 함수는 오히려 부수 효과를 발생?? static class Person { int age; String name; pu..
-
Lifecycle QuizAndroid 2023. 3. 4. 01:42
헷갈리는 Lifecycle 안녕하세요. Mash-Up 안드로이드 10기 양민욱입니다 :) 2021년 1월의 끝이 벌써 다가오고 있어요. 그리고 곧 채용 시즌인가봐요. 🤗 채용 공고 정보를 올려 주는 톡방에 들어가 있으면 요즘 여러 좋은 기업에서 채용 공고들이 올라오고 있는 것을 볼 수 있어요. 저는 그럴때마다 얼른 기술 면접 준비는 해야지 해야지하고 다짐하고 있습니다. 그런 의미에서 이번 포스팅 주제로 Android 기술 면접에서 기초적인 개념일 수도 있지만 헷갈리는 여러 Lifecycle 질문에 대해서 답을 확인해보려고 해요. 이 포스팅을 준비하기 전, “Lifecycle에 대해서 어느정도 다룰 예정이신가요? 범위 엄청 넓어요!” 라는 질문을 받았어요. 사실 주제를 처음 생각할 때는 간단한 개념처럼 느..
-
-
MVVM && Hilt (etc) Study RecordAndroid 2023. 3. 4. 01:32
MVVM && Hilt (etc) Study Record 안녕하세요. 10기 박서희입니다. 세 번째 주제는 제가 지금 현재 학습하고 있는 MVVM과 Hilt를 가지고 왔습니다. 저는 아직 Kotlin, Rxjava 등 새로 배우는 것도 많고 경험해보지 못한 것이 많아서 제가 새로 배우는 내용을 같이 다루는 프로젝트를 해커톤 전까지 실습해 보고 익숙해지자는 작은 목표를 설정했어요. 그래서 이번 블로그 글로는 상황 공유와 함께 해당 내용을 학습하며 알게 된 내용을 기록하고 실습할 수 있는 프로젝트들을 리스트업 해보았습니다. 아래 내용들은 #ref에 기재한 링크에서 clone 하거나 해석해 본 것들입니다. 해당 링크에서 학습하는 내용을 더 자세히 확인할 수 있습니다. 틀린 내용이 있으면 알려주시면 감사하겠..
-
Sealed Class를 활용한 상태 제어Android 2023. 3. 4. 01:03
Sealed Class로 상태 관리 하기 안녕하세요! Mash-Up 10기 이두한입니다. 이번에는 10기 현성님이 기술해 주신Sealed Class를 사용하여 통신 상태를 제어하고 기존에 제가 사용하던 Interface를 사용하는 것과 어떤 차이점이 있는지 기술하도록 하겠습니다. Sealed Class에 관한 자세한 설명은 현성님의 Sealed Class로 RecyclerView Multi View Type 때려 부수기를 참고해 주세요. 다음과 같이 버튼 클릭 시View의 배경색을 변경하는 간단한 프로그램을 작성해 보겠습니다. Color Type 지정 enum class ColorType (val title: String, val colorCode: String){ RED("RED", "#ff0000")..
-
Clean Code Series 1 - Clean Code개발 서적 2023. 3. 4. 00:53
Clean Code Series 1 - 깨끗한 코드 본 글은 로버트 C.마틴의 클린 코드 책을 읽고 작성한 글입니다. 간단한 요약글과 작성자의 생각을 담았습니다. 코드가 존재하리라 자동으로 코드를 생성하는 시대가 다가오는 시대에 코드의 종말이 코앞에 닥쳤다고 주장하는 사람들이 있지만 이는 틀린 말이다. 코드는 요구사항을 상세히 표한하는 수단이다. 추상화 또한 불가하며, 정확히 명시하는 수밖에 없다. 요구사항을 모호하게 줘도 우리 의도를 정확히 꿰뚫어 프로그램을 완벽하게 실행하는 기계가 나오리라 기대하지만 이는 불가능하다. 사람 조차도 고객의 막연한 감정만 갖고는 성공적인 시스템을 구현하지 못한다. 요구사항에서 정형 구조를 뽑아내는 도구를 만들더라도 어느 순간에는 정밀한 표현이 필요하다. 이 필요성을 없앨..
-
Coroutine FlowKotlin 2023. 3. 4. 00:49
Asynchronous Flow suspending function은 비동기로 단일값을 반환하는 반면, Flow는 비동기로 동작하면서 여러 개의 값을 반환하는 function을 만들 때 사용하는 coroutine builder입니다. flow {}로 생성된 block은 suspend 할 수 있습니다. flow 역시 builder 이기 때문에 suspend 키워드 없이 함수를 만들 수 있습니다. emit 함수를 이용해 값들을 방출합니다. collect함수를 이용해 방출된 값들을 수집합니다. code fun foo() = flow { for(i in 1..3) { delay(100) emit(i) } } fun main() = runBlocking { val startTime = System.currentT..