분류 전체보기 1203

Android LiveData - 5 (Livedata Transformations map / switchMap)

안드로이드 LiveData를 하다보면 나오는 map / switchMap에 대해서 알아보겠습니다. 이름에서 나오는 느낌처럼 LiveData의 값을 변경하는 것입니다. 구글 문서에서는 Transformations이라고 설명되어 있는데 LiveData를 변경하는 방법 중 map/switchMap에 대해서 알아보겠습니다. 그런데, 이걸 왜 쓰고, 어떻게 쓰는지 한번 확인해보겠습니다. 하나의 데이터가 변경될 때, 다른 데이터들도 변경해줘야 하는 경우가 있습니다. 어떤 경우에 사용하면 좋을지 한번 간단한 앱을 보면서 살펴보겠습니다. 우선은 Transformations을 사용하지 않고 사용했을 때입니다. 숫자(x)를 입력하면 x+x 와 x*x 가 나오는 앱입니다. 이 것을 아래와 같이 코드를 작성했습니다. 위의 코..

Android Jetpack 2022.01.15

Android LiveData - 4 (Fragment LifeCycleOwner)

안드로이드 LiveData를 보다 보면 LifeCycleOwner라는 개념이 나옵니다. Fragment를 보면 자주 나오는 LifeCycleOwner라는 것을 알아보겠습니다. 구글 공식문서는 어떻게 설명하는지 보겠습니다. Why use viewLifecycleOwner? Fragment views get destroyed when a user navigates away from a fragment, even though the fragment itself is not destroyed. This essentially creates two lifecycles, the lifecycle of the fragment, and the lifecycle of the fragment's view. Referring..

Android Jetpack 2022.01.09

Android LiveData - 3 (Livedata vs MutableLiveData)

지금까지 LiveData를 배운다고 했는데, mutableLiveData에 대해서만 알아봤습니다. LiveData와 MutableLiveData는 어떤 것이 다른지 한번 살펴보겠습니다. 이름처럼 MutableLiveData는 변경이 가능한 값이고, LiveData는 변경이 불가능합니다. 아니, 그러면 변경할 필요가 없는 데이터는 LiveData로 하고, 변경할 필요가 있는 데이터는 MutableLiveData로 하면 되나?? 라는 의문이 드는데, 꼭 그런건 아닙니다. 구글에서는 어떻게 설명하고 있는지 살펴보겠습니다. 구글에서는 캡슐화를 위해서 LiveData를 이용한다고 적혀있습니다. Task: Encapsulate the LiveData Encapsulation is a way to restrict d..

Android Jetpack 2022.01.02

Android LiveData - 2 (ViewModel + LiveData)

이 글에서 Livedata에 대해 잠시 봤는데, 이 것을 ViewModel을 이용해서 한번 보겠습니다. 아래와 같이 ViewModel을 만들어줍니다. 그냥 단순하게, Livedata부분을 ViewModel로 옮겨준 것이라고 생각하면 됩니다. 코드는 아래와 같이 ViewModel을 만들어서 파일 밖으로 빼줬습니다. 자, 계속해서 다음 글에서 LiveData에 더 알아보도록 하겠습니다.

Android Jetpack 2022.01.02

Android LiveData - 1 (MutableLivedata 간단예제)

LiveData에 대해서 알아보겠습니다. 말 그대로 생생한 데이터? 인 것 같은데 이 것을 왜 사용하는지 알고 가보겠습니다. 구글 공식문서에서는 아래와 같이 설명해놨습니다. LiveData 사용의 이점 LiveData를 사용하면 다음의 이점이 있습니다. UI와 데이터 상태의 일치 보장 LiveData는 관찰자 패턴을 따릅니다. LiveData는 기본 데이터가 변경될 때 Observer 객체에 알립니다. 코드를 통합하여 이러한 Observer 객체에 UI를 업데이트할 수 있습니다. 이렇게 하면 앱 데이터가 변경될 때마다 관찰자가 대신 UI를 업데이트하므로 개발자가 업데이트할 필요가 없습니다. 메모리 누수 없음 관찰자는 Lifecycle 객체에 결합되어 있으며 연결된 수명 주기가 끝나면 자동으로 삭제됩니다...

Android Jetpack 2021.12.27

Android ViewModel - 5 (ViewModel Factory)

ViewModel을 공부하다 보면, ViewModel Factory라는 것이 나옵니다. 이 ViewModel Factory라는 것이 무엇인지 한번 짚고 넘어가겠습니다. 일단 기존의 ViewModel의 코드를 보면서 한번 생각해보면 위의 같이 ViewModel에서 어떠한 파라메터를 받지 않고 생성이 됩니다. 만약에 ViewModel에 생성자로 파라메터를 넘겨줄 때 어떻게 해야할까요? 그 때문에 ViewModel Factory라는 개념이 나왔습니다. DataSource나 reposifoty를 viewModel에 파라메터로 넘겨주기 위해서 사용합니다. 그렇다면 어떻게 사용할까요? 한번 살펴보겠습니다. 저는 MainViewModel에 startNum이라는 값을 넘겨주기 위해 ViewModel을 만들었습니다. 그..

Android Jetpack 2021.12.24

Android ViewModel - 4 (Activity Fragment ViewModel 공유)

아래 영상에서 강의로 보실 수 있습니다. https://www.inflearn.com/course/친절한-jetpack-1?inst=3b988560 [중급편] 친절한 JETPACK 개론 (Android Kotlin) - 인프런 | 강의 코틀린으로 안드로이드 개발을 위한 젯팩(JETPACK) 개론입니다. 안드로이드 개발을 하면서 사용할 수 있는 다양한 테크닉을 연습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com Android에서 Activity와 Fragment의 ViewModel 공유 방법에 대해서 알아보겠습니다. 우선은 아까 만들었던 Activity와 ViewModel을 그대로 만들어보겠습니다. 여기에서 중앙에 Fragment를 추가해주고, Fragment와 Activi..

Android Jetpack 2021.12.22

Android ViewModel - 3 (Fragment에서 사용)

아래 영상에서 강의로 보실 수 있습니다. https://www.inflearn.com/course/친절한-jetpack-1?inst=3b988560 [중급편] 친절한 JETPACK 개론 (Android Kotlin) - 인프런 | 강의 코틀린으로 안드로이드 개발을 위한 젯팩(JETPACK) 개론입니다. 안드로이드 개발을 하면서 사용할 수 있는 다양한 테크닉을 연습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com Activity에서 ViewModel Fragment에서는 ViewModel을 어떻게 사용하는지 알아보겠습니다. 기존의 계산기 예제에서, 화면을 뒤집으면 View가 새롭게 생성되면서 초기화가 되었는데, Fragment에서는 어떻게 되는지 살펴보겠습니다. 기존의 계산기..

Android Jetpack 2021.12.18

Android ViewModel - 2 (Activity ViewModel)

이전 글에서 ViewModel을 쓰지 않고 화면을 뒤집었을 때 계산기 카운터가 초기화 되는 문제를 확인했습니다. 그렇다면, ViewModel을 사용하면 이 문제를 어떻게 해결할 수 있을까요? ViewModel의 사용법 그러면 ViewModel을 이용해서 한번 살펴보겠습니다. MainViewModel 을 만들어서 변수 countValue를 선언해줍니다. 그런 후에, Activity에서 viewModel을 아래와 같은 코드로 연결해줍니다. lateinit var viewModel: MainViewModel viewModel = ViewModelProvider(this).get(MainViewModel::class.java) 전체 Activity 코드를 보면 아래와 같습니다. 다시 ViewModel 데이터를 ..

Android Jetpack 2021.12.18

Android ViewModel - 1 (ViewModel의 필요성)

안드로이드의 AAC(Android Architecture Components)를 공부하다 보면, 가장 처음에 나오는 개념입니다. ViewModel이란? 구글 문서에 보면 아래와 같이 설명이 나와있습니다. Android 프레임워크는 활동과 프래그먼트 같은 UI 컨트롤러의 수명 주기를 관리합니다. 프레임워크는 특정 사용자 작업이나 완전히 통제할 수 없는 기기 이벤트에 대한 응답으로 UI 컨트롤러를 제거하거나 다시 만들도록 결정할 수 있습니다. 시스템에서 UI 컨트롤러를 제거하거나 다시 만드는 경우, 컨트롤러에 저장된 모든 일시적인 UI 관련 데이터가 삭제됩니다. 예를 들면 앱 활동 중 하나에 사용자 목록이 포함되어 있는데, 구성이 변경되어 활동이 다시 생성되면 새 활동이 사용자 목록을 다시 가져와야 합니다...

Android Jetpack 2021.12.18