분류 전체보기 1203

Android Unit Test

정말 간단한 테스트코드 작성법입니다. 안드로이드 폴더를 보면 아래와 같은 test프로젝트들이 나와있습니다. 그 중에, 아래 부분을 돌려서 테스트를 할 수 있는데, 이 부분을 어떻게 하는지 보면 아래와 같이 해줄 수 있습니다. 간단한 클래스 하나 만들어서 이 친구의 값이 참인지 아닌지를 비교할 수 있습니다. 그렇다면, UI Test는 어떻게 할까요? 아래와 같이 버튼한번 누르고 나오는 텍스트 체크하는 테스트를 작성해봤습니다. 설명은 귀찮으니 아래 링크들 보시면 됩니다. 또한 테스트 모의 객체를 만들 수 있는 Mockito라는 친구도 있는데 자세한건 아래에서 https://greedy0110.tistory.com/57 [테스트] Mock, Mockito - 사용법, 레시피, when, verify, 유용한 ..

Android(Kotlin) 2021.08.27

anti MVVM Pattern

안드로이드 mvvm 패턴으로 개발을 하다 보면, 이렇게 하는 것이 맞나? 라는 생각이 종종 들 때가 있습니다. 이와 관련해서 자료를 찾아보니 좋은 블로그를 발견해서 저도 한번 정리해보겠습니다. https://blog.gangnamunni.com/post/mvvm_anti_pattern/ MVVM Anti Pattern MVVM Architecture을 적용할 때 피해야할 패턴에 대하여 알아보자 by 강남언니 블로그 blog.gangnamunni.com 가장 의문이 드는 경우는 ViewModel에 어디까지 하고, Activitiy에 어디까지 적용해야 하는가? 입니다. 1. ViewModel 안에 안드로이드 프레임워크가 있어도 될까요? 안드로이드 프레임워크라는 것은 저희가 흔히 개발을 하면서 보는 아래와 같..

Android(Kotlin) 2021.08.27

Sealed class vs Enum

가끔 예제들을 보다보면 Sealed class 와 Enum 이라는 친구들을 보게 됩니다. 이 친구들이 뭐인지 한번 살펴보겠습니다. sealed 얘를 번역기 돌려보니깐 봉인이라고 나옵니다. 봉인된 클래스? 라는 이름에서 나오는 느낌을 한번 살펴보겠습니다. 간단하게 아래의 예제를 작성해봤습니다. 위와 같이 abstract class 인 sealed class 를 선언해서 객체를 선언해줬습니다. 장점으로는 when을 사용할 때입니다. when을 사용할 때 else 를 이용해서 경우를 한번 보겠습니다. else를 이용해서 예외 케이스를 지정해줬습니다. 그러면 sealed class는 어떻게 할까요? 아래와 같이 seaed class에 정의되지 않은 부분에서 컴파일 타임에 에러가 납니다. 때문에 아래와 같이 변경..

Android(Kotlin) 2021.08.27

OSI 7 Layer

학교다닐 때 네트워크 수업들을 때 한번 들어봤던 내용입니다. 학교다닐 때는 이게 도대체 뭔소리야? 라고 생각했는데 너무 쉽게 설명해주는 영상이 있어 한번 정리해봤습니다. https://www.youtube.com/watch?v=1pfTxp25MA8 1계층 - 물리계층 (Physical layer) 컴퓨터와 컴퓨터끼리 연결해서 아날로그 신호를 통해서 0과 1을 전달해줍니다. 2계층 - 데이터 링크 계층(Data-Link Layer) 라우터(스위치)를 통해서 컴퓨터들을 연결해줘서 데이터를 전달합니다. 여러 데이터가 섞이지 않게 앞뒤로 숫자를 붙여서 구분할 수 있는데 이를 Framing이라고 합니다. 3계층 - 네트워크 계층(Network Layer) 수많은 네트워크로 이루어진 연결 속에 IP주소를 이용해서 ..

기술 2021.08.24

Android MVC MVVM MVP

안드로이드의 디자인 패턴을 공부하다 보면 자주 나오는데, 간단하게 설명되어 있는 자료가 없습니다. 몇년 전에 이 설명을 봐도 와닿지가 않았는데, 앱 여러개 더 만들어보고 나니깐 설명이 와닿네요. 한번 해보겠습니다. - MVC 앱을 처음 만들 때 아마 모두 MVC라고 생각합니다. 한번 그림을 보겠습니다. 여기는 우리가 아는 모든게 다 있습니다. View에 xml이 정의되어 있고 Controller에 Activity가 있고 Model이라고 데이터 타입이 정의된 곳이 있습니다. 아래의 예제 코드를 보시면 더 쉽게 와닿을 수 있는데 Activity(Controller)안에서 모든 것을 다 처리해주고 있습니다. model부분이라고 해봤자, model = new Board(); 이런식으로 모델 불러와서 사용해주고 ..

Android(Kotlin) 2021.08.24

Clean Architecture

개발을 하다보면 한번쯤은 들어보는 개념입니다. MVVM, MVP, MVC 등의 디자인 패턴은 들어봤고, 코드를 잘 정리해야 하는건 알겠는데 클린아키텍처는 또 뭐고 이건 왜 써야하는가? 에 대해서 한번 간단하게 보고 가겠습니다. 그냥 쉽게말하면 프로젝트 구조를 분리해서 서로 의존하지 않고 테스트와 유지보수를 쉽도록 한다라는 뜻인데 그림을 보면서 한번 살펴보겠습니다. 클린아키텍처라고 하면 위와 같은 그림이 나오는데, 안드로이드에서는 아래의 그림이 더 직관적이기 때문에 아래의 그림을 참고하시는게 더 좋을 듯 합니다. 여기 보면 Presentation Layer Domain Layer Data Layer 라고 3개의 Layer로 분리가 되어 있습니다. 일단은 하나하나씩 살펴보겠습니다. Data Layer 말 그..

Android(Kotlin) 2021.08.24

코루틴(Coroutine)

rx와 함께 많이 듣는 코루틴입니다. 한번 코루틴에 대해서 알아보겠습니다. 간단하게 말하면 비동기 프로그래밍인데 얘가 어떻게 동작하는지 알 수 있는 매우매우 간단한 예제를 보겠습니다. 간단하게 테스트를 찍어보겠습니다. 위에서 볼 수 있듯이, 순차적으로 진행되고, 메인쓰레드가 실행됩니다. 그러면 코루틴을 이용하면 어떻게 되는지 보겠습니다. 위와 같이 worker thread가 동작하고 비동기적으로 이루어지는 것을 볼 수 있습니다. 흔히 보는 rxJava(rxKotlin)과 다른 점이 무엇일까 살펴보면은 - Rxjava Observable pattern으로 subscribe 들어온 데이터를 stram으로 내보낸다. 중간에 데이터가 변환되는걸 stream을 통해서 확인 가능 - Coroutines 누구나 아는..

Android(Kotlin) 2021.08.23

Android Workmanager

안드로이드에 WorkManager에 대해 간단하게 알아보겠습니다. 안드로이드 공식 문서를 찾아보면 아래와 같이, background 작업이 이떻게 쓰이냐? 라는 부분이 있는데 요약하면 아래와 같습니다. WorkManager는 애플리케이션 프로세스의 활성화 여부에 상관없이 다양한 제약 조건 충족 시 실행해야 하는 백그라운드 작업을 처리합니다. 이런 경우가 어디에 있냐 하면 원격 동기화 메모 앱을 생각하시면 됩니다. 사용자가 앱을 닫아도, 어떻게든 동기화가 되는 앱입니다. 간단하게 예제 앱을 만들어보겠습니다. 앱을 켜면 Notification이 뜨고, 앱이 꺼지던 안꺼지던 간에 작동이 실행되도록 해보겠습니다. - 참고 https://camposha.info/android-examples/android-wor..

Android(Kotlin) 2021.08.22

Android Room Google Ex

Android Kotlin Room 예제입니다. 아래의 예제를 참고했습니다. 기존 코드를 그대로 돌리면 오류가 나는 부분이 있기 때문에, 일부 수정해줬습니다. https://developer.android.com/codelabs/android-room-with-a-view-kotlin#3 뷰를 사용한 Android Room - Kotlin | Android 개발자 | Android Developers 이 Codelab에서는 Kotlin 코루틴과 함께 Android 아키텍처 구성요소(RoomDatabase, Entity, DAO, AndroidViewModel, LiveData)를 사용하는 Android 앱을 Kotlin으로 빌드합니다. 이 샘플 앱은 단어 목록을 Room 데이터베이스 developer.a..

Android(Kotlin) 2021.08.22