livedata가 왜 필요한 건지 궁금합니다
128
작성한 질문수 4
retrofit 관련 학습 중인데요. livedata/mutablelivedata 가 나오는데 viewmodel과 무슨 차이가 있는지 궁금해서 여쭤 봅니다.
viewmodel은 변수를 쉽게 지정해서 사용하는 클래스 정도로 이해하고 있는데, livedata는 왜 필요한 건지를 잘 모르겠어서요
livedata는 수명주기를 인식한다는 말과 관찰 가능하다는 말이 무슨 말인지요?
답변 3
0
만약 도시명을 입력받고 검색을 누르면
뷰모델에서 레트로핏 api로 데이터를 받아오고 그 결과를 보여주는 앱을 디자인한다고 가정 했을 때,
제가 제대로 이해했다면, 도시명을 입력 받는 변수는 뷰모델로 처리하고, 그에 따른 변동된 검색결과를 보여주는 변수는 관찰가능한 라이브데이터로 처리하면 될 것 같군요.
0
LiveData 가 관찰 가능하다는 뜻은 LiveData 에 넣어 둔 데이터가 변경되었을 때 뷰단에서 콜백으로 알림이 오게 된다는 뜻입니다.
그래서 명시적으로 화면 업데이트 하는 코드를 여러군데 쓸 필요가 없습니다.
그리고 Activity나 Fragment의 생명주기에 따라서 화면이 보일때는 LiveData 의 값을 관찰하고, 화면이 안 보일 때는 관찰을 중지하기 때문에 수명주기를 인식한다고 표현합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김창완님.
ViewModel과 LiveData에 대해 궁금한 점을 가지고 계신 것 같네요!
ViewModel은 UI 관련 데이터를 저장하고 관리하기 위해 사용됩니다. 보통 액티비티나 프래그먼트가 파괴되었다가 다시 생성될 때 데이터를 유지하기 위해 활용됩니다.
한편, LiveData는 관찰 가능한 데이터 홀더 클래스로서, 데이터가 변경되면 이를 관찰하고 있는 모든 컴포넌트가 자동으로 업데이트되는 특징이 있습니다. LiveData는 Android의 수명 주기 인식 구성 요소, 즉 액티비티와 프래그먼트의 수명 주기를 고려하여, 수명 주기 소유자의 상태가 STARTED 또는 RESUMED일 때만 옵저버가 알림을 받을 수 있습니다.
간단히 말해:
- ViewModel은 데이터를 직접 보유하며, 시스템에 의해 파괴/재생성되는 경우에도 데이터를 유지할 수 있도록 도와줍니다.
- LiveData는 무언가를 ‘보고’ 있는 역할을 하며, 데이터의 변화가 발생할 때 자동으로 알려주는 역할을 합니다.
보다 구체적인 설명과 관련된 예제는 다음 질문들을 참고하시면 도움이 될 것입니다:
- 라이브 데이터 + 데이터 바인딩 질문드립니다! - LiveData와 데이터 바인딩의 상호 작용을 탐구합니다.
- Kotlin DataBinding - LiveData와 데이터 바인딩 활용의 다른 측면들에 대해서 알아봅니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
ViewModel 사용 관련 질문
0
75
1
onTabFavorite 콜백 관련 질문
0
60
2
깃허브에 있는 MemoryTodoRepository 는 룸을 사용하는게 아닌 메모리에 저장, 수정, 삭제 하는건가요?
0
172
1
이젠 아래와 같은 오류가 뜨는데 KSP가 문제 인걸까요?
0
369
2
영상 1분쯤에서 MainActivity에서 viewModel이 저는 안되고 그래들 문제인거 같은데 해결 방법을 모르겠습니다.
0
186
1
전자액자에서 영상과 깃허브의 내용이 달라서 영상을 다보고 깃허브 내용으로 돌려봤는데 권한요청부터가 안됩니다.
0
188
2
Navigation수업에서 string대신 bitmap을 인자로 넘겨주는 방법?
0
177
1
TodoList - 04에서 recentlyDeleteTodo가 null일 경우 처리 방법 문의
0
171
1
나만의 웹 브라우저 03 - UI와 ViewModel 연동 강의에서 질문들이 있습니다.
0
205
2
Scaffold를 사용하면 Content padding parameter it is not used 에러
0
349
1
Material3로 바뀌면서 강의랑 다른 부분이 초반부터 있는데요.
0
221
1
강의에서 사용하는 리소스(이미지 등)을 다운 받을 수 있으면 좋겠어요.
0
247
2
Card Compose에서 elevation 옵션
1
347
1
구글맵 질문입니다
0
233
1
구글맵강의중에서 ..
0
578
7
drawCircle( color = Color.... 부분에서 빨간줄이 ...
0
269
2
val scaffoldState = rememberScaffoldState() 에서 빨간줄이 생기네요
0
524
1
나만의 웹브라우져 02 코드실행시 에뮬레이터에 따라
0
221
1
나만의 웹브라우져 01 코딩 후 실행하면 아래와 같은 오류가 뜨네요
0
3220
2
비만도계산기 로직작성 에서 문제가 발생했어요 ^^
0
338
3
viewModel() 오류 추가질문입니다
0
1118
2
viewModel: MainViewModel = viewModel() 에 오류있습니다
0
537
3
AAR metadata 관련오류발생
0
1436
3
모바일화면에 키보드가 사라지지 않아
0
250
1





