안드로이드
-
ViewModel에 대하여안드로이드 2023. 4. 17. 23:47
ViewModel은 왜 필요한가?MVVM의 관점으로 봤을 때 ViewModel은 View로 부터 독립적이며, View가 필요로 하는 데이터만을 소유한다. 안드로이드 앱 개발시에도 MVVM디자인 패턴을 적용하면 Activity나 Fragment같은 UI컨트롤러의 과도한 책임을 분담하여 클래스가 거대해지는 것을 방지하고, 유지보수, 재사용성, 그리고 테스트 등을 용이하게 만들어 준다. 구글에서도 앱 개발자들에게 MVVM패턴을 사용하도록 권장하고 있으며, MVVM관점의 ViewModel을 구현할 때 AAC ViewModel을 사용하면 좋다. ViewModel의 특징ViewModel은 Activity에서는 Activity가 완전히 종료될 때까지, 그리고 Fragment에서는 Fragment가 분리될 때까지 메모..
-
추상클래스와 인터페이스안드로이드 2023. 4. 17. 23:47
추상 클래스를 알아보기로 한 계기는 LiveData를 알아보면서 시작됐다. LiveData에 대하여MVVM을 학습하다 보면 데이터는 늘 LiveData를 사용한다. LiveData는 무엇일까? 안드로이드 디벨로퍼 사이트의 문서의 첫 설명에는 다음과 같이 설명하고 있습니다.LiveData는 관찰 가능한 데이터 홀더 클래스입니다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식합니다. 즉, 활동, 프래그먼트, 서비스 등 다른 앱 구성요소의 수명 주기를 고려합니다. 수명 주기 인식을 통해 LiveData는 활동 수명 주기 상태에 있는 앱 구성요소 관찰자만 업데이트합니다.즉, 앱의 구성요소의 LifeCycle 내에서 동작하고 LifeCycle이 종료되면 같이 삭제가 됩니다. 이러한 특성으로 ..
-
LiveData에 대하여안드로이드 2023. 4. 12. 21:26
MVVM을 학습하다 보면 데이터는 늘 LiveData를 사용한다. LiveData는 무엇일까? 안드로이드 디벨로퍼 사이트의 문서의 첫 설명에는 다음과 같이 설명하고 있습니다.LiveData는 관찰 가능한 데이터 홀더 클래스입니다. 관찰 가능한 일반 클래스와 달리 LiveData는 수명 주기를 인식합니다. 즉, 활동, 프래그먼트, 서비스 등 다른 앱 구성요소의 수명 주기를 고려합니다. 수명 주기 인식을 통해 LiveData는 활동 수명 주기 상태에 있는 앱 구성요소 관찰자만 업데이트합니다.즉, 앱의 구성요소의 LifeCycle 내에서 동작하고 LifeCycle이 종료되면 같이 삭제가 됩니다. 이러한 특성으로 인해 다음과 같은 이점들이 존재합니다.Live Data의 이점1. UI와 데이터 상태의 일치 보장L..
-
MVVM패턴 예제안드로이드 2023. 4. 5. 23:51
MVVM패턴?MVVM패턴이란 Model, View, View Model을 분리하여 뷰에 모델간의 의존성을 줄어주는 패턴이다.뷰(Activity / Fragment)와 모델(Repository)이 분리되어 있고, 이 분리된 두 로직 사이에서 뷰의 이벤트에 따라 모델이 데이터를 반환/저장하도록 통신하는 뷰모델이 존재한다.뷰뷰모델모델이벤트를 발생시켜 데이터 요청해당 데이터를 불러오는 모델의 메소드를 호출뷰모델에서 요청하는 값을 반환모델로부터 받은 값을 라이브데이터에 저장라이브데이터를 감지해 저장된 값을 뷰에 출력위와 같이 뷰와 모델은 서로 어덯게 동작하는지와 상관없이 로직을 작성할 수 있고 뷰모델을 통해 데이터를 통신할 수 있게 된다.MVVM 사용 이유android의 대중적인 패턴에는 MVC와 MVP도 존재한..
-
GDG super.init(version=4) 후기 2컨퍼런스 2023. 4. 5. 23:51
이전글 GDG super.init(version=4) 후기 1과 이어집니다.GDG super.init(version=4) 후기 12023년 4월 1일 GDG Korea가 주최하는 super.init(version=4)를 다녀왔다. 카카오톡 오픈채팅 GDG Korea Android Q&A 운영방을 통해 알게되었다. 개발자들의 모임에 참석한 건 두번째이다. 처음 행사를 알게되었을 때 사실 주제가 흥미로워서 참석했다기 보다는 이러한 행사들을 참여하고 우물속에서 나오기 위해서였다. (생각해보니 주제도 당일에 알게된 것 같다.) 아무튼!! 참여하고 엄청난 울림이 있었다는 것이 중요한 것 아니겠습니까? 발표는 총 6가지 세션이 있었고 나는 그 중 3가지 세션이 크게 다가왔다. 첫째 안드로이드 주니어, 시작점에 서기..
-
GDG super.init(version=4) 후기 1컨퍼런스 2023. 4. 2. 00:35
2023년 4월 1일 GDG Korea가 주최하는 super.init(version=4)를 다녀왔다. 카카오톡 오픈채팅 GDG Korea Android Q&A 운영방을 통해 알게되었다. 개발자들의 모임에 참석한 건 두번째이다. 처음 행사를 알게되었을 때 사실 주제가 흥미로워서 참석했다기 보다는 이러한 행사들을 참여하고 우물속에서 나오기 위해서였다. (생각해보니 주제도 당일에 알게된 것 같다.) 아무튼!! 참여하고 엄청난 울림이 있었다는 것이 중요한 것 아니겠습니까? 발표는 총 6가지 세션이 있었고 나는 그 중 3가지 세션이 크게 다가왔다. 첫째 안드로이드 주니어, 시작점에 서기까지 마이리얼트립의 임준섭 개발자님이 발표를 해주셨다. 준섭님께서는 별거아닌 취준기라고 이야기 해주셨지만 이직준비가 막막했던 나에..
-
kotest 활용해보기2안드로이드 2023. 2. 12. 01:28
kotest에는 아래와 같은 테스트 스타일이 있다. 아래의 스타일 중 테스트하고자 하는 스타일에 맞춰 선택하면 된다.Test StyleInspired ByFun SpecScalaTestString SpecA Kotest originalShould SpecA Kotest originalDescribe SpecJavascript frameworks and RSpecBehavior SpecBDD frameworksFree SpecScalaTestWord SpecScalaTestFeature SpecCucumberExpect SpecA Kotest originalAnnotation SpecJUnit하나씩 알아보자! 주로 사용하게 될 스타일 몇가지를 알아보자.1. FunSpec가장 기본이 되는 스타일인듯하다. t..
-
[android] java.lang.NoClassDefFoundError와 removeIf안드로이드 2023. 2. 1. 22:56
회사에서 일을 하는 중 ArrayList.removeIf{ (item as ItemEx) ….} 이러한 코드에서 NoClassDefFoundError가 발생했다. 테스트하던 2개의 기기에서 전혀 이상이 없이 잘 진행됐었는데 새로이 다른 기기에서 테스트를 하면서 발생하였다.인터넷을 검색해보면 NoClassDefFoundError의 설명은 다음과 같았다.JVM이 내부의 클래스 정의 데이터 구조(class definition data structure)에서 Class를 찾지 못했다는 것, 단순히 Classpath에서 Class를 로드하지 못했다는 것과 약간은 다르다. 일반적으로 과거에 Classpath에서 Class를 로드하려 시도했지만 실패하였고, 다시 해당 Class를 사용하려고 시도할 때 로드에 실패했던..