일일 회고
개인과제, 선발대 과제가 있다.
둘 다 한다는 생각으로 하고 있긴 한데, 둘을 병행하면 힘들 것 같다고 생각하여 일단 개인과제부터 하기로 맘을 먹었다.
주말까지 최대한 개인과제를 마무리해본 다음, 수요일 선발대 세션이 돌아올 때까지 선발대 과제를 진행해 봐야겠다.
오늘의 키워드
- mvvm 개요
- 개인 과제
MVVM 개요
왜 배우고 써봐야 하는가?
- 안드로이드 기본 구조 mvc는 activity가 view, controller 역할을 같이 수행한다.
- model을 통해 데이터를 주고받는다.
- 이러한 방식은 SOLID원칙 중 S인 SRP 단일 책임 원칙을 위반하게 된다 - (view & controller)
--> view와 business logic을 분리해 보자
비즈니스 로직을 presenter에 묶을 수 있어서 분리가 되기는 함, 단 activity와 presener 사이의 의존성이 커진다.
--> 이 의존성을 해결하기 위해 mvvm의 등장
view와 묶이지 않고, view는 viewModel을 '관찰'한다. ViewModel은 view에 직접 화면 갱신 명령을 내리지 않는다.
정리
MVC - 안드로이드 기본구조, Model - View - Controller, Activity가 View와 Controller를 동시에 담당함
MVVM - ViewModel과 View(Activity)를 나누고 비즈니스 로직이 담긴 ViewModel을 두어 분리함 --> ViewModel을 언제든지 재사용 가능
개인과제
Trouble Shooting - SharedPreference 값을 가져와서 정렬하기
보관함 기능을 하던 중, 값을 가져왔는데 정렬을 하여도 계속 무작위로 보이는 현상을 발견했다.
SharedPreference를 찾아보던 중, SharedPreference의 getAll() 메서드로 값을 가져왔을 때, Map 타입으로 값을 가져온다. Map은 Key, Value으로 값이 저장되다 보니 순서가 보장되지 않는다. 그렇기 때문에, 정렬하는 방법을 따로 정해야 한다.
정한 방법은, sharedPreference에 long 타입으로 ordering이라는 값을 저장하여 순서를 넣는다. 그리고 좋아요 체크박스를 넣을 누를 때마다, ordering에 순서를 업데이트해서, 순서를 저장한다. 앱을 껐다 켜도 SharedPreference에서 값을 가져와서 ordering 번호를 이전 상태에서 유지시킬 수 있다.
'내일배움캠프 7기 > TIL' 카테고리의 다른 글
내일배움캠프 7기 Android TIL 46일차 (2023.09.18) (0) | 2023.09.18 |
---|---|
내일배움캠프 7기 Android TIL 45일차 (2023.09.15) (0) | 2023.09.15 |
내일배움캠프 7기 Android TIL 43일차 (2023.09.13) (0) | 2023.09.13 |
내일배움캠프 7기 Android TIL 42일차 (2023.09.12) (0) | 2023.09.12 |
내일배움캠프 7기 Android TIL 41일차 (2023.09.11) (0) | 2023.09.11 |