상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - LiveData의 관찰자(Observer)는 어떻게 구현하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
LiveData의 관찰자(Observer)를 구현하는 방법에 대해 자세히 설명드리겠습니다. LiveData는 안드로이드 아키텍처 컴포넌트 중 하나로, UI에서 데이터를 관찰하고 <a href='https://sangseek.com/sangseeks/변경 사항/ko'>변경 사항</a>이 있을 때 자동으로 UI를 업데이트해주는 역할을 합니다. LiveData를 사용하면 데이터의 생명주기(lifecycle)를 안전하게 관리할 수 있기 때문에 메모리 누수나 크래시를 줄이는 데 매우 유용합니다. 1. 기본 개념 - LiveData 는 데이터 홀더 클래스입니다. - Observer 는 LiveData의 데이터 변화를 감지하고 반응하는 역할을 합니다. - 관찰자는 "관찰 대상(LiveData)"에 등록되며, LiveData의 데이터가 변경될 때 콜백 메서드가 호출됩니다. - 관찰자는 LifecycleOwner(예: Activity, Fragment)와 함께 등록되어 해당 라이프사이클 상태에 따라 자동으로 활성화 및 비활성화 됩니다. 2. Observer 인터페이스 구현하기 Observer는 `androidx.lifecycle.Observer<T>` 인터페이스를 구현해야 합니다. 여기서 `T`는 LiveData가 감싸고 있는 데이터의 <a href='https://sangseek.com/sangseeks/타입/ko'>타입</a>입니다. 일반적으로 다음과 같이 간단히 구현합니다: ```java Observer<String> observer = new Observer<String>() { @Override public void onChanged(String data) { // LiveData의 데이터가 변경될 때 호출됨 // UI 업데이트 등 필요한 작업을 수행 textView.setText(data); } }; ``` 코틀린을 사용할 경우 람다 구문으로 간단하게 작성할 수 있습니다: ```kotlin val observer = Observer<String> { data -> // data가 변경되었을 때 실행 textView.text = data } ``` 3. Observer 등록하기 관찰자는 LiveData 인스턴스에 `observe()` 메서드를 통해 등록합니다. ```java liveData.observe(lifecycleOwner, observer); ``` - `lifecycleOwner`는 주로 `this` (Activity 또는 Fragment)로 넘기며, 이 객체의 라이프사이클에 따라 관찰자의 활성화/비활성화가 자동으로 관리됩니다. - 이때 LiveData가 관리하는 데이터가 갱신되면 `observer`의 `onChanged()`가 호출됩니다. 예시 (Java): ```java liveData.observe(this, new Observer<String>() { @Override public void onChanged(String data) { textView.setText(data); } }); ``` 예시 (Kotlin): ```kotlin liveData.observe(viewLifecycleOwner, Observer { data -> textView.text = data }) ``` Fragment에서는 보통 `viewLifecycleOwner`를 사용해 관찰자를 등록합니다. 4. Observer 동작 원리 - LiveData는 <a href='https://sangseek.com/sangseeks/내부적으로/ko'>내부적으로</a> 등록된 모든 Observer 리스트를 관리합니다. - LifecycleOwner의 상태가 STARTED 이상일 경우에만 Observer에게 알림을 전달합니다. - LifecycleOwner가 DESTROYED 상태가 되면 자동으로 해당 Observer가 해제되어 메모리 누수를 방지합니다. 5. 직접 Observer 클래스를 만들어 사용하기 특별한 경우에는 아래처럼 별도로 Observer 클래스를 작성할 수도 있습니다. ```java public class MyObserver implements Observer<String> { private TextView textView; public MyObserver(TextView tv) { this.textView = tv; } @Override public void onChanged(String data) { textView.setText(data); } } ``` 그리고 등록 시: ```java MyObserver observer = new MyObserver(textView); liveData.observe(this, observer); ``` --- 요약 - Observer는 `androidx.lifecycle.Observer<T>` 인터페이스를 구현하는 동시에 `onChanged(T data)` 메서드를 오버라이드 합니다. - LiveData의 `observe(LifecycleOwner, Observer)` 메서드를 통해 관찰자를 등록합니다. - 관찰자는 LifecycleOwner의 상태에 따라 활성화/비활성화가 자동으로 처리되어 안전하게 UI에 데이터를 바인딩할 수 있습니다. - Kotlin에서는 람다식과 함께 보다 간결하게 Observer를 구현할 수 있습니다. 이렇게 구현된 Observer는 LiveData의 변화를 감지해 UI를 동적으로 업데이트하는 역할을 하며, 안드로이드의 MVVM 패턴에서 View와 ViewModel 간 데이터 전달을 쉽게 해줍니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기