Android

지금까지 여러 사이드 프로젝트를 하면서 에러를 겪은 적은 많았다. 그러나 대부분의 사이드 프로젝트가 그렇듯 유저가 없었기에 나와 팀원들이 (혹은 지인들이) 발견해서 고쳤다. 또 대부분의 에러가 심각한 문제는 아니었다. 주요 기능을 사용할 수 있는 선에서 조금 불편해지는 정도였다. 그러나 이번엔 메인 기능을 사용할 수 없을 정도의 큰 에러를 제보받게 되었다. 반려동물의 이름 입력이 안된다는 제보였다. 나는 쭉(ZOOC)이라는 팀에서 핏어팻(fitapat)이라는 서비스를 운영하는 안드로이드 개발자다. 핏어팻은 유저 반려동물의 이름, 종, 사진을 입력 받고 AI를 통해 반려동물 커스텀 굿즈를 만들어 판매하는 서비스다. 반려동물을 등록해야 제품을 구매할 수 있는데, 반려동물 이름 입력이 안된다는 것이었다. 즉,..
현재 진행중인 반려동물 기록 서비스 'ZOOC'을 개발핟면서 생긴 이슈다. 아래는 우리 앱의 메인 화면이다. 호스팅 액티비티에 바텀 네비게이션이 있고 홈, 마이페이지 두 개의 프레그먼트가 전환되는 형태이다. 가운데 + 버튼을 누르면 기록을 위한 새로운 액티비티가 생성되는데, 해당 액티비티를 갔다오면 홈 프레그먼트의 데이터를 리프레시해야했다. 그래서 Activity Result API를 이용해 기록 액티비티에서 돌아오는 시점을 알고 데이터를 리프레시 하려고했다. 그런데 여기서 문제가 발생했다. 바텀 네비게이션은 호스팅 액티비티에, 리프레시할 데이터는 홈 프레그먼트에 있었기 때문이다. 즉, 바텀 네비게이션이 액티비티에 있으므로 기록 액티비티에서 돌아오는 시점을 프레그먼트가 아닌 액티비티가 아는 것이 문제였다..
지난 번에는 MVC to MVP를 작성했었다. 우테코 레벨 2 내내 MVP 패턴으로 개발했고 느낀 것들로 MVP가 좋은 점에 대해 설명했다. 그래서 이번엔 레벨 3 내내 함께한 MVVM 패턴에 대해 이야기해보려고 한다. MVVM을 간략하게 설명하자면 Model + View + Viewmodel 이다. MVVM도 MVP와 마찬가지로 MVC에서 파생된 패턴이라고 할 수 있다. MVP에서 바뀐 부분은 한 가지로 Presenter가 ViewModel이 된 것이다. 이제 이 부분에 대해 살펴보자. 뷰와의 의존 관계 MVP에선 (추상화를 통해) 뷰와 프레젠터가 서로를 (느슨하게) 알고있었다. 뷰와 프레젠터 모두 서로를 인터페이스에 정의된 함수들을 통해 호출하였다. 그러므로 뷰와 프레젠터 서로에게 의존하는 양방향 의..
MVC 우테코의 레벨 1 미션은 MVC 패턴으로 수행했다. MVC를 간략히 설명하자면, 모델과 뷰를 분리하고 모델과 뷰 사이를 컨트롤러가 연결해주는 형식이다. 컨트롤러는 유저가 뷰를 보고 발생시키는 이벤트를 전달해 모델을 변경하고 모델의 변경 사항을 다시 뷰에 적용한다. 컨트롤러는 한 개만 존재하므로 컨트롤러와 뷰의 관계는 1:N이 된다. 어찌 됐든 중요한 점은 모델과 뷰를 분리한다는 것이다. 레벨 1은 코틀린으로만 미션을 진행했지만 레벨 2는 안드로이드 프레임워크 위에서 미션이 진행되었다. 그래서 안드로이드에 종속적이게 되었고 이전과는 몇 가지 다른 점이 발생한다. MVC In Android 안드로이드에선 뷰 그 자체인 xml 파일과, 해당 뷰의 이벤트를 전달 받고 변화시키는 액티비티가 존재한다. 하나..
인터루드
'Android' 태그의 글 목록