mash-up
-
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 하거나 해석해 본 것들입니다. 해당 링크에서 학습하는 내용을 더 자세히 확인할 수 있습니다. 틀린 내용이 있으면 알려주시면 감사하겠..
-
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..
-
Dependency Injection And Service LocationAndroid 2023. 3. 3. 23:27
안녕하세요. 안드로이드 10기 이진성입니다. 본 포스팅은 Dependecy Injection and Service Location 글을 번역 및 정리한 것입니다. Dependecy Injection DI는 항상 안드로이드 커뮤니티에 오르고 내린 주제였다. 개인적으로 그렇게 어려운 개념은 아니지만 안드로이드 개발자들은 여전히 클린 한 방법에 대해 논쟁하고 싸우고 있습니다. 커뮤니티에서 활발한 논쟁을 하고 있음에도 이 문제에 대해 만족스러운 대답을 도출하지 못했습니다. 이 논쟁에 대한 가장 큰 장벽은 Activity와 Fragment의 Constructor은 파라미터를 갖지 못하는 것입니다. 그리고 이러한 컴포넌트들은 생성과 파괴를 애플리케이션 라이프사이클에 맞춰 이뤄집니다. 이러한 요소들이 안드로이드에서 ..
-
코루틴(Coroutine) 취소와 타임아웃Kotlin 2023. 2. 26. 15:09
Cancellation and Timeouts 이번 게시글에서는 코루틴의 취소와 timeout 처리에 대해 알아보자. ※ IntelliJ나 Android Studio가 설치되어 있지 않다면 Kotlin 공식 사이트에서 지원하는 온라인 IDE(Kotlin Playground)를 사용하여 아래 코드를 실행할 수 있다. Cancelling coroutine execution launch에서 반환되는 job 객체는 코루틴을 취소할 수 있는 기능을 제공해 준다. fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a ..
-
RxJava 리액티브 연산자 입문RxJava 2023. 2. 25. 15:50
RxJava 리액티브 연산자 입문 ReactiveX 문서의 연산자 부분을 살펴보면 다양한 연산자(operator) 함수가 존재합니다. 리액티브 연산자의 특징은 언어 특성과 크게 연관이 없다는 것입니다. ReactiveX는 자바뿐만 아니라 자바스크립트, 닷넷, 스칼라, 클로저, 스위프트의 리액티브 연산자 목록을 함께 제공하기 때문입니다. 리액티브 연산자 분류 연산자 생성(Creating) 연산자 : Observable, Single 클래스 등으로 데이터의 흐름을 만들어내는 함수. 변환(Transforming) 연산자 : 어떤 입력을 받아서 원하는 출력 결과를 내는 전통적인 의미의 함수. 필터(Filter) 연산자 : 입력 데이터 중에 원하는 데이터만 걸러내는 함수. 합성(Combining) 연산자 : 생성..