분류 전체보기 1203

kotlin lateinit lazy

안드로이드에서 코틀린을 사용하다 보면 종종 만나는 lateinit lazy 에 대해서 알아보겠습니다. 이름에서처럼 늦게 시작하거나 게으른 것 처럼 동작하는데, 하나씩 좀 살펴보겠습니다. - lateinit 아래에서 볼 수 있듯이, 먼저 선언해놓고 타입을 지정한 이후 값을 아래에서 입력할 수 있습니다. - lazy 아래에서 볼 수 있듯이, lazy를 read-only로 선언하고 이후에 값을 초기화 해줄 수 있습니다. 그럼 2개의 차이점은 무엇일까 알아보면 lateinit -> var lazy -> val 로 선언된 것을 확인할 수 있습니다. 때문에, lateinit은 값이 변할 수 있는 경우, lazy는 read-only로만 쓰이는 값에 쓰는 것이 적절합니다. 참조 - https://medium.com/t..

Android(Kotlin) 2021.08.22

rxAndroid, rxJava, rxKotlin

안드로이드를 하다보면 rxJava, rxKotlin, rxAndroid 그리고 이 것들을 코루틴(coroutine)으로 대체할 수 있고, 완전히 대체는 못하는데 어쩌고 저쩌고 하는 말을 굉장히 많이 듣습니다. 그러면, 이게 도대체 뭔데? 그리고 왜 쓰는건데? 에 대해서 알아보겠습니다. 일단 RX에 대해서 검색해보면 뭐라고 나오는지 보면 보통 이런 말들을 더럽게 이해 안가게 써놓습니다. RX는 관찰 가능한 시퀀스를 사용하여 비동기 및 이벤트 기반 프로그래밍을 하기위한 라이브러리다. observer pattern을 이용하여, 시퀀스를 조합할 수 있게 한다. low-level Thread 동기화와 Thread 안정성, non-blocking IO에 대한 우려를 줄인다. 여기까지 알아봤을 때 드는 느낌은 비동기..

Android(Kotlin) 2021.08.22

Android Room

안드로이드 Room에 대한 간단한 예제입니다. 구글링해도 복잡한 예제밖에 없고, viewmodel과 livedata, 코루틴등을 알지 못하면 예제를 이해할 수 없도록 만들어놨기 때문에 가장 간단하게 제가 만들어봤습니다. 일단 gradle에 넣어주고 Entity를 만들어줍니다. db를 만져보셨으면 대충 감이 올텐데, 데이터 모델을 정의하는 곳입니다. 그 다음 DAO를 만들어줍니다. DB에 쿼리를 날리는 곳이라고 생각하면 됩니다. 그 후, 데이터베이스를 만들어주는 곳을 정의하고 난 다음 메인액티비티에서 불러와서 사용해봤습니다. 메인 쓰레드에서 접근하면 오류나기 때문에 새롭게 쓰레드를 만들어줬습니다. (이 부분을 코루틴을 이용하면 간단합니다.) 참조 - https://developer.android.com/t..

Android(Kotlin) 2021.08.22

간단한 Android Network 연결 상태 체크

다음기회에 자세히 해보겠습니다. https://developer.android.com/training/basics/network-ops/managing?hl=ko#detect-changes 네트워크 사용 관리 | Android 개발자 | Android Developers 이 과정에서는 네트워크 리소스 사용을 세밀하게 제어하는 애플리케이션 작성 방법을 설명합니다. 애플리케이션에서 많은 네트워크 작업을 실행한다면 앱의 데이터 사용 패턴(예: 앱의 데이터 developer.android.com

Android(Kotlin) 2021.08.20

Fragment LifeCycle

프래그먼트의 생명주기에 대해 알아보겠습니다. 위에 그림에서 볼 수 있듯이 아래의 순서대로 진행됩니다. 자, 이 친구들을 하나하나씩 살펴보려고 하는데, 문서를 부면 최소한 다음과 같은 수명 주기 메서드를 구현해야 한다고 합니다. onCreate() 프래그먼트를 생성할 때, 시스템에서 호출됩니다. 프래그러먼트가 일시정지되거나, 중단되었다가 재개되었을 때 유지하고자 하는 것을 초기화합니다. 주의해야 할 점은, onCreate()전에 onAttach()가 실행됩니다. 이 시점에서 Fragment View가 생성되지 않아서 Fragment의 View작업을 하기 적절하지 않습니다. onCreateView() 프래그먼트에서 UI를 그릴 때 호출됩니다. View를 반환해주는데 프래그먼트에서 UI를 제공하지 않으면 nu..

Android(Kotlin) 2021.08.19

LiveData ViewModel

LiveData에 대해서 알아보겠습니다. 이름에서 느낄 수 있는 것은 생생한 데이터 입니다. 실제로 그런 용도에요 어떻게 쓰는지 보기 전에, 왜 쓰는지부터 알아보겠습니다. - UI와 데이터 상태의 일치 보장(최신 데이터 유지) livedata라는 이름에 맞게, 생생한 데이터를 유지해야 합니다. 데이터가 변경될 때 마다 observer 객체에서 데이터 변화를 감지합니다. - 수명 주기 관리 용도 ViewModel과 함께 사용하여 수명 주기를 일일이 관리해줄 필요가 없습니다. 자, 그럼 LiveData는 어디서 선언해줘서 관찰해줘야 할까요? 주로 onCreate() 메서드에서 관리해주며, 그 이유는 onResume()에서 중복 호출을 피하기 위해서입니다. 여기까지 간단하게 알아봤으니, 어떻게 사용하는지 알아..

Android(Kotlin) 2021.08.18

Android ViewModel

안드로이드 뷰모델(ViewModel)에 대해서 알아보겠습니다. 가장 중요한게 이걸 왜 쓰는가? 인데, 이 것을 검색해보면 이런 이미지가 나옵니다. 이렇게 나오고 설명이 아래와 같이 나와있습니다. 일반적으로 시스템에서 활동 객체의 onCreate() 메서드를 처음 호출할 때 ViewModel을 요청합니다. 시스템은 활동 기간 내내(예: 기기 화면이 회전될 때) onCreate() 메서드를 여러 번 호출할 수 있습니다. ViewModel이 처음 요청되었을 때부터 활동이 끝나고 폐기될 때까지 ViewModel은 존재합니다. 설명은 요약해보면, 여기까지 보면 onCreate()를 여러번 호출해도 viewModel이 유지된다. 정도로 요약할 수 있는데, 뷰모델을 사용하지 않고 제가 화면을 회전하면 어떻게 되는지 ..

Android(Kotlin) 2021.08.18

데이터바인딩(databinding) 양방향 binding

개복치개발자 강의는 아래의 링크에서 보실 수 있습니다. https://www.inflearn.com/course/%EC%B9%9C%EC%A0%88%ED%95%9C-jetpack-1?inst=3b988560 [중급편] 친절한 JETPACK 개론 (Android Kotlin) - 인프런 | 강의 코틀린으로 안드로이드 개발을 위한 젯팩(JETPACK) 개론입니다. 안드로이드 개발을 하면서 사용할 수 있는 다양한 테크닉을 연습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 데이터바인딩에 대해서 알아보겠습니다. 데이터바인딩을 하는 방법은 아래에 설명되어 있습니다. https://philosopher-chan.tistory.com/1307 Android ViewBinding VS D..

Android(Kotlin) 2021.08.18