반응형
LiveData 란?
LifeCycle 을 알고있는 DataType 으로서 Observer 패턴을 따릅니다. 데이터의 변경이 일어났을때 콜백 으로 받아 처리 가능하며 단일 효과보다 Databinding, ViewModel, Room 과 접목하여 사용하면 코드라인 감소 및 고급기능을 구현 한 Architecture 생성이 가능합니다.
LiveData 상세 설명
https://developer.android.com/topic/libraries/architecture/livedata?hl=ko
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>
반응형