RxJava의 Single 객체를 찾아보게 된 이유는 AsyncTask를 이용해서 네트워크 통신을 해야하는데 AsyncTask는 deprecated된다고 하니 대안으로 RxJava, coroutine을 사용해야 한다고 한다. 그렇기 때문에 둘다 확인을 해볼 예정이었는데, 특히 Single은 내가 구현하고자 하는 리턴 값 하나와 에러처리에 최적화 되어 있으므로, Single에 대해서 우선 공부해보려고 한다. 일단 Single 객체를 사용하기 위한 사전정보를 간략하게 적어봤다 (차차 RxJava를 공부하면서 업댓할 예정) - Observable ReactiveX에서 observer는 Observable에 의해서 subscription 한다. 그러면 observer는 Observable에 의해서 배출되는 연속..
이에 대한 글을 쓰게 된 이유... Activity간의 객체를 전달하는데 사용되는 기술이 Serializable과 Parcelable이 있고, 웹개발할 때 사용했던 Serializable을 사용했었다. Parcelable은 안드로이드 앱 개발 중에 처음 들어봤고, 처음 접했으니 Serializable보다 어렵게 느껴졌기 때문에 계속해서 Serializable을 사용했었다. 그런데... 면접 보면서 Parcelable의 사용여부를 물어봤었다. 음... 안쓰더라도 알아야겠다고 생각했고, 오늘 앱 고도화를 진행하면서 제대로 확인하고 더 좋은 것을 사용해보자! 라는 생각에 Serialiable과 Parcelable의 특징을 찾아보기로 했다. 이 내용은 이 둘의 특징에 대한 것이다. Serialization(직렬..
ViewModel : UI components 위한 데이터를 제공하고 변경된 configuration 에 대해서 데이터가 유지되도록 하는 객체 즉, Activity Instance가 rotation에 의해서 재생성되면서 UI data는 모두 소멸되게 된다. 이러한 문제를 해결하기 위해 UI 데이터를 Activity에서 관리하는 것이 아니라 ViewModel에서 관리하도록 해야 한다. Activity는 모든 UI 상호작용을 처리하고 데이터를 로딩하고, UI component 들을 그리는 등 많은 작업을 처리해야 한다. 모든 클래스는 각자의 역할이 단일화되어 있어야 한다. "Single Responsibility Principle : Every class should have a single respnsib..
Room Persistence Library : SQLite 객체 매핑 라이브러리 (Android Jetpack의 구성요소) 특징 - 상용구 코드(boilerplate code)를 피하고, SQLite 테이블 데이터를 자바 객체로 쉽게 변환 가능 - SQLite 에 대한 완벽한 활용이 가능하며, 데이터 베이스 액세스를 지원하는 추상화 계층을 제공 - 기기 내에 캐시를 만들 수 있어, 인터넷 연결 여부와 관계 없이 일관된 형태로 데이터 제공 - Less boilerplate code - Compile-time checked queries - Ease of implementing migrations - High degree of testability - Keeping database work away fro..
안드로이드 앱을 개발하면서 막상 build.gradle(빌드파일)에 대한 속성에 대해서 dependency를 제외하고는 제대로 알지 못했다. 그래서 면접 질문에 나왔는데 대답을 못했음..... ㄸㄹㄹㄹ... 이참에 !! 정리해보자 !! 참고 - https://jw910911.tistory.com/49 - https://jsdev.kr/t/targetsdkversion-compilesdkversion/4653 - https://developer.android.com/guide/topics/manifest/uses-sdk-element.html - https://medium.com/androiddevelopers/picking-your-compilesdkversion-minsdkversion-targetsd..
CustomView 는 자주 사용하고, 또 면접에서도 많이 물어보는 것 같다. 이참에 제대로 알아두자 !! 해서 강의 듣고 정리해봄 !! 강의 : Tacademy - Android Application 프로그래밍 중급 19강 Custom View | T아카데미 https://www.youtube.com/watch?v=0Yccqj5tm6s 문서 : https://developer.android.com/guide/topics/ui/custom-components?hl=ko CustomView 개요 Android는 기본 레이아웃 클래스 View 및 ViewGroup에 기반하여 UI를 구축할 수 있는 정교하고 강력한 구성요소화된 모델을 제공합니다. 우선 플랫폼에는 UI를 구성하는 데 사용할 수 있는 미리 빌드된..
"관심사 분리" View는 UI컨트롤러를 통해 사용자와 상호작용하는 화면 영역이다. ViewModel은 View에 제공되는 데이터를 관리하고, Model과 통신하기 위한 데이터 처리 비즈니스 로직을 수행함 ViewModel은 UI 구성요소를 알지 못하므로 구성변경에 영향을 받지 않음 ViewModel에서 UI 표출관련 데이터객체가 확보되면, View에 알려야하는데, 여기서 LiveData가 사용됨 LiveData는 식별가능한 데이터 홀더입니다. LiveData를 이용하면 해당 데이터를 이용하는 다른 구성요소들은 데이터 변경에 따른 사항들을 관찰할 수 있음. LiveData는 이를 관찰하는 구성요소에 대한 수명주기를 고려하기 때문에 객체 유출, 과도한 메모리 소비를 방지하기 위한 로직을 포함 Reposit..
AdroidManifest.xml에서 각 Activity 마다 launchMode를 설정하여, Activity의 인스턴스를 어떻게 실행시킬 것인지에 대한 지침을 정의함. launchMode - standard : Activity 호출마다 인스턴스를 새롭게 생성 - singleTop : 호출하는 Activity가 Task의 상단에 이미 존재하는 경우, 새로 인스턴스를 생성하지 않고 기존 인스턴스를 사용 - singleTask : Task 내에 Activity의 인스턴스가 하나만 존재하도록 함. ( Ex : MainActivity - Sub1 -> Sub2 일렇게 스택에 쌓여있는데 Sub2에서 MainActivity로 돌아가고 싶으면 새로운 MainActivity 인스턴스를 생성하는 것이 아닌 Sub2와 S..