Android
-
Android) Android의 여러가지 Annotation (@String,Drawable,ColorRes, @CallSuper)Android 2021. 1. 19. 21:52
@StringRes, @DrawableRes, @ColorRes @StringRes 애너테이션과 @DrawableRes 애너테이션, @ColorRes 애너테이션은 리소스 아이디 관련 애너테이션입니다. 요소의 값이 이 애너테이션들이 의미하는 리소스 타입에 해당하는 리소스의 아이디임을 의미합니다. Android의 모든 리소스는 R 클래스에 의해 int 타입의 아이디로 관리됩니다. 그래서 drawable 타입 리소스의 아이디를 넣어야 할 곳에 문자열 리소스의 아이디나 정수 리터럴을 넣는 등 실수를 범할 수 있는데, @DrawableRes 애너테이션을 활용하면 실수를 방지할 수 있습니다. @StringRes 예제 void setMessage(@StringRes int resId) { mMessage = mCon..
-
Android) Fragment에서 View Binding 문제점, 제대로 사용하기Android 2021. 1. 6. 22:22
View Binding을 모르시는 분들은 이전 글에서 확인 부탁드립니다. Problems in ViewBinding View Binding in Fragment private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = ResultProfileBindi..
-
Android) LiveData와 Lifecycle 알아보기 - Activity, Fragment 사용법Android 2021. 1. 5. 15:28
개발을 하다보면 Activity와 Fragment를 함께 사용하면서 복잡한 생명주기를 다루게 되는 순간이 있습니다. 이 때 생명주기에 더욱 주의를 기울여야 하는데, AAC의 Lifecycle이 생명주기의 처리를 도와주는 라이브러리입니다. LiveData Observer Pattern을 쉽고 간단한 문법으로 구현 할 수 있게 해줍니다. 주로 ViewModel에 생성하며 View가 observe 하는 형태로 사용합니다. LiveData는 lifecycle-aware component입니다. 즉 LiveData의 lifecycle은 observer의 lifecycle을 따라갑니다. 그래서 observer가 위치한 View가 사라지게 되면 LiveData도 함께 사라집니다. ※ Observer Pattern 1..
-
Android) Clean Architecture 알아보기Android 2020. 12. 30. 20:10
저희는 개발자로 성장해가면서 여러 가지 기술들을 배우고 잘 짜여진 구조로 프로젝트에 적용하려고 노력합니다. 그 이유는 대표적으로 프로젝트의 유지보수를 쉽고 편하게 하기 위해서, 가독성, 성능을 높여주기 위해서라고 할 수 있습니다. 하지만 막상 구조의 변화가 있을때 잘 대응할 수 있을까에 대한 고민과 제대로 이해하며 사용하고 있는지에 확신이 들지는 않았습니다. 그래서 오늘은 잘짜여진 설계란 어떤 것인가와 어떤 이점이 있는지 알아보겠습니다. Clean Architecture 클린 아키텍처는 모바일부터 백엔드까지 모든 소프트웨어에 일반적으로 필요한 내용을 담고 있습니다. 각 계층을 어떻게 나누고 어떤 요소로 구성할 것인가에 대한 원칙들을 제시합니다. 가운데로 갈 수록 높은 수준, 바깥으로 갈수록 낮은 수준의 ..
-
Android) View Binding 알아보기, 바인딩 비교Android 2020. 12. 27. 15:24
View Binding은 왜 등장했을까? 오늘은 2019년 Google I/O에서 소개된 View Binding에 대해 알아보겠습니다. 현재까지 안드로이드에서 뷰에 접근할 수 있는 다양한 방법이 제공되었습니다. 위의 표에서 구글의 안드로이드 팀은 해당 방법들을 다음과 같은 세세 가지의 기준을 정해 비교했습니다. Elegance : 코드를 깔끔하게 작성할 수 있는지 Compile Time Safety : 컴파일 시간에 안전한지 Build Speed Impact : 빌드 속도가 빠른지 findViewById의 문제점 val textView = findViewById(R.id.txtView) 뷰의 개수대로 코드를 추가해줘야 합니다. (100개면 100줄을??) Null safety하지 못합니다. 잘못된 뷰 i..
-
Android) SavedStateHandle 알아보기Android 2020. 12. 22. 18:57
안드로이드에서 ViewModel을 사용하면, 화면 회전 같은 Configuration 변경의 경우 상태를 보존 할 수 있습니다. 그럼 ViewModel을 사용하면 액티비티 상태 유지가 가능한거 아닌가요? 네. 아래의 경우에는 ViewModel 만으로 상태 유지를 할 수 없습니다. 시스템에 의해서 Activity가 종료되는 경우 ViewModel도 함께 메모리에서 제거 되기 때문입니다. 사용자가 명시적으로 Activity를 종료한 케이스 Back(뒤로가기) 버튼 누른 경우 최근 앱 화면에서 앱을 밀어서 종료시킨 경우 상위 액티비티로 이동한 경우 설정화면에서 앱을 강제로 종료한 경우 finish() 메소드를 호출하여 Activity 종료한 경우 아래의 표는 시스템에 의해 Activity가 종료 되었을 경우 ..
-
Android) LiveData 언더바 변수 의미 - Backing PropertyAndroid 2020. 12. 14. 17:13
LiveData를 사용하여 안드로이드 개발을 하다보면 아래 코드와 같이 언더바로 시작하는 변수와 그렇지 않은 변수가 쌍으로 붙어있는 코드를 볼 수 있습니다. MutableLiveData 와 LiveData ? MutableLiveData는 ViewModel 안에서 해당 데이터가 수정 될 수 있습니다. LiveData는 읽을 수 있지만, 변경 되지 않습니다. LiveData는 ViewModel 외부에서 데이터를 읽을 수 있으나, 수정되지 않게 하려면 LiveData를 통해 외부에 해당 데이터를 제공 해야 합니다. 이러한 이유는 외부에서 Livedata를 변경하지 못하게 하고, 내부에서는 변경이 가능하게 하기 위한 구현이 목적입니다. 이것은 "캡슐화"와 같은 방법입니다. 오브젝트의 필드 중 일부에 대한 직접..
-
Android) Mockito로 Unit Test 작성해보기 - KotlinAndroid 2020. 12. 2. 21:34
실제 기기에서 테스트를 실행함으로써 얻는 신뢰도가 필요하지 않은 경우 로컬 단위 테스트를 사용하여 테스트를 할 수 있는데, 이 때, 테스트에 최소한 Android 프레임워크 종속 항목이 있거나 테스트가 고유한 객체에만 종속되어 있다면 모의 프레임워크를 사용하는 방법인 Mockito 방법이 있습니다. Unit Test 메서드를 테스트하는 또 다른 메서드. 하나의 단위 테스트(Unit Test)는 하나의 메서드의 특정 루틴을 검사합니다. 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지를 테스트하는 것입니다. 사용하는 부분 복잡한 기능을 가진 구현 부분 시간이 지남에 따라, 변경 가능성이 큰 구현 부분 비즈니스 로직 공개 API 결함이 있었던 구현 부분 수정이 완료된 ..