상세 컨텐츠

본문 제목

LiveData

ANDROID

by dhkim0405 2021. 7. 26. 20:39

본문

Live Data

 

라이브 데이터란? 

생명주기를 인식할수 있는 관찰 가능한 홀더 클래스 이다. 액티비티 혹은 프래그 먼트의 생명주기가 STARTED, RESUMED상태이면 LiveData는 관잘자를 활성화 상태로 인식한다. DESTROY가 되면 관찰자를 삭제한다. 

 

 

Live Data의 장점 

  • UI 데이터 상태 일치 보장 : Observer를 통해 데이터를 변경할 수 있다. 
  • 메모리 누출 방지 : 연결된 수명 주기에 따라 자동으로 관리 된다. 
  • 비정상 종료 방지 : 마찬가지로 수명주기에 따라 자동으로 관리 되기 때문이다. 
  • 최신 데이터 유지 : 수명주기가 활성화로 전환될때 새로운 데이터를 받는다. 

 

 

구글 권장 

  • Live Data를 관찰자와 연결 시키는 과정은 onCreate 에서 하는것이 좋다. 
  • 해당 액티비티가 활성화 되는 즉시 최신의 데이터를 유지하기 위함이다. 
  • OnResume 에서 선언할 경우 액티비티의 생명주기 전환에 따라 중복 호출될 가능성이 있기 때문이다. 

 

 



실습 

라이브 데이터를 사용하기 위해 다음 세가지를 구현 하면 된다. 

  • 라이브 데이터 객체 생성
  • 라이브 데이터에 Observer 추가하기
  • 라이브 데이터의 value 변경 코드 작성 

 

 

예시 1) 버튼을 클릭하면 count를 올려 화면에 보이도록 하기

-> 라이브데이터의 value값이 변하자 observer{…} 블록이 실행되고 TextView 값이 변하는 것을 확인할 수 있다. 

 

 

 

 

예시 2) Mutable<ArrayList<String>> observer 확인하기 

-> liveData.value 에 ArrayList를 할당하였다 

-> 버튼을 클릭하면 liveData.value의 ArrayList.add를 수행하였다. 

-> liveData.value 의 size와 Observer 호출 여부를 Log로 찍어보았다. 

-> Observer{…} 실행되지 않는 것을 확인

-> liveData가 참조하고 있는 값이 변하는 것이 아닌 liveData의 참조가 변해야 Observer{..}블록 실행하는 것을 알 수 있다. 

 

 

 

예시 3) LiveData와 Recycler뷰 연동하기 

 

EditText에 값을 입력한후 버튼을 누르면 RecyclerView의 item의 TextView에  입력한 text가 나타나도록한다.

 

 

 

-> updateUI 메서드에서는 라이브 데이터로 부터 전달받은 배열로 adapter를 생성해 recycler뷰의 어뎁터를 교체 해준다.

 

-> 데이터 를 뷰와 바인딩 하는 기능은 홀더 내에서 수행화도록 한다.

 

-> Recycler View Adapter 구현 

 

 

 

 

'ANDROID' 카테고리의 다른 글

ViewModel  (0) 2021.07.28
RecyclerView  (0) 2021.07.28
Room database  (0) 2021.07.27
4대 컴포넌트 - SERVICE  (0) 2021.05.29
CHAP 13 -1 MediaPlayer class  (0) 2021.05.28

관련글 더보기