[Android] Jetpack의 LiveData란?
Android

[Android] Jetpack의 LiveData란?

반응형

LiveData 란?

LifeCycle 을 알고있는 DataType 으로서 Observer 패턴을 따릅니다. 데이터의 변경이 일어났을때 콜백 으로 받아 처리 가능하며 단일 효과보다 Databinding, ViewModel, Room 과 접목하여 사용하면 코드라인 감소 및 고급기능을 구현 한 Architecture 생성이 가능합니다.

 

LiveData 상세 설명

https://developer.android.com/topic/libraries/architecture/livedata?hl=ko

 

LiveData 개요  |  Android 개발자  |  Android Developers

LiveData를 사용하여 수명 주기를 인식하는 방식으로 데이터를 처리합니다.

developer.android.com

 

 

LiveData의 Event 처리

LiveData의 Event에는 setValue 와 postValue 가 있는데 setValue에서는 UI Thread즉 Main Thread에서 실행하고 postValue에서는 Background Thread에서 처리한다.

 

 

LiveData 사용 예시

  • ViewModel 에서 LiveData 선언
public class MainViewModel extends BaseViewModel<MainView> {

// LiveData 선언 
// 값의 가변 여부에 따라 MutableLiveData / LiveData 로 사용
	private final MutableLiveData<Object> liveData;
	
	public void setLiveData(Object object){
    		liveData.setValue(object);
	}
	
	public LiveData<Object> getLiveData(){
    		liveData.getValue();
	}
}

 

  • Activity 에서 LiveData Observe
public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> implements MainView, HasSupportFragmentInjector {

@Override
    public void onCreate() {

    // Live Data 를 Observe 및 CallBack 처리
    viewModel.getLiveData().observe(this, data -> viewModel.setOvResSI1000(data));

    }
}

 

  • ViewModel + DataBinding 조합으로 Xml 레이아웃 서식 작성
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
		<!-- ViewModel 선언-->
        <variable name="viewmodel" type="MainViewModel" />
    </data>

	<TextView
		<!-- title 값이 변경되는대로 TextView UI 는 자동으로 변경됨 -->
     		android:text="@{viewmodel.liveData.title}"
	</TextView>
</layout>

 

반응형