분류 전체보기
-
안드로이드 아키텍처 (MVC)안드로이드 학습/Android 기술면접 대비 2024. 12. 9. 11:58
안드로이드 개발자가 자주 보는 앱아키텍처 종류로는 MVC, MVP, MVVM, MVI다. MVC는 4가지 아키텍처중 가장 오래된 패턴이며, 현재는 안드로이드에서 잘 사용하지는 않는다. 실제로 적용하고 많이 사용하는 것은 MVVM일 것이다. 하지만 아키텍처가 어떤 이유로 MVVM에로 넘어갔고 왜 아키텍처 패턴을 사용하는지나 가장 쉬운 구조로 관심사 분리라는 주제를 학습하는 것이 좋다고 생각해서 MVC를 먼저 학습해봤다. MVC (Model View Controll) :MVC는 Model, View, Controller의 약자다. 이것을이 하는 역할을 보자면Model앱에서 사용하는 데이터, 상태, 비지니스 로직을 포함한다.View 또는 Controller에 묶이지 않아서 재사용이 가능하다.View사용자에게..
-
안드로이드 앱 테스트 기본 - 2 (UI Test예제 포함)안드로이드 학습/Android 기술면접 대비 2024. 12. 7. 17:20
안드로이드에서 UI 테스트는 아래 방법들이 있다Espresso: 구글이 제공하는 UI 테스트 프레임워크.UIAutomator: 시스템 앱을 포함한 더 넓은 범위를 테스트할 때 사용.Compose Test: Jetpack Compose UI를 테스트하는 전용 API.그 외에 Robotium, Calabash, Robolectric 등등이 있다. Espresso 공식 샘플 ( Espresso 뿐만 아니라 UIAutomator, JUnit4 등 다양한 샘플 보유)1. EspressoEspresso는 앱의 UI와 테스트를 자동으로 동기화 해준다. Espresso는 3가지 기본 component를 갖는다.ViewMatchers - 현재 뷰 계층 구조에서 뷰를 찾을 수 있도록 지원합니다.ViewActions - ..
-
안드로이드 앱 테스트 기본 - 1 (JUnit Test 예제 포함)카테고리 없음 2024. 12. 4. 18:18
자바를 배우면서 JUnitTest를 사용해본 경험이 있다. 안드로이드에서도 앱 테스트 코드를 만들어서 테스트 한다는 것을 알고는 있었지만 학습해본 적이 없어서 이번에 한번 학습해보려고 한다.1. 테스트 코드를 작성하는 이유 ?일반적으로 내가 개발할때 테스트하는 것은 앱을 에뮬레이터나 스마트폰에 직접 설치 후 사용해보는 방식으로 테스트를 해봤다. 하지만 프로젝트의 규모가 크다면 앱을 build하는 시간도 오래 걸리고 ui를 만드는 시간도 걸리기 때문에 테스트 속도가 느려진다. 또한 반복적인 테스트를 해야하는 상황이라면 앱을 일일이 빌드하고 테스트 해보는 것은 비효율적일 수 있다. 이러한 부분에서 장기적으로 봤을때는 테스트 코드를 만들어 놓은다면 똑같은 테스트를 해야하는 경우는 시간을 절약할 수 있고 빌드..
-
안드로이드 Coroutine Flow - 3 (StateFlow) 코드안드로이드 학습/Compose 2024. 12. 2. 14:37
ViewModelclass CoroutineStateFlowViewModel : ViewModel() { // StateFlow private val _coroutineData = MutableStateFlow(CoroutineUiState.success("")) val coroutineData: StateFlow> = _coroutineData.asStateFlow() // ShareFlow private val _sharedFlow = MutableSharedFlow( replay = 1, extraBufferCapacity = 1 ) val sharedFlow: SharedFlow = _sharedFlow .shareIn( ..
-
안드로이드 Coroutine Flow - 3 (StateFlow)안드로이드 학습/Android 기술면접 대비 2024. 11. 28. 13:54
안드로이드 앱 아키텍처 예제를 보면 Coroutine과 Flow 뿐만 아니라 ViewModel에서 StateFlow나 SharedFlow를 사용하는 것을 보았다. MVVM 패턴에서 ViewModel 내부에서 자주 사용했던 것은 LiveData였기 때문에 StateFlow는 무엇이 다른지 학습해볼 필요성이 있어 추가적으로 학습을 해봤다. Flow와 비교해보기 위해 우선 LiveData에 대해 간략하게 알고 넘어가 보자LiveData :LiveData 같은 경우 안드로이드의(Activity나 Fragment의 LifeCycler을 인식하는 데이터 Holder 클래스다. 그래서 LiveData는 생명주기 관리가 따로 필요하지 않은 편리함 때문에 MVVM 아키텍처를 사용하면서 ViewModel 내에서 자주 사..
-
안드로이드 Coroutine Flow - 2 (Flow 사용)안드로이드 학습/Android 기술면접 대비 2024. 11. 28. 10:48
1편에서 flow 사용법을 app architecture 예제와 같이 보긴 했지만 좀더 쉽게 이것 저것 활용해 보기 위해 예제를 새로 다시 하나 만들었다. 1. Producer(생산자)private fun coroutineFlowProducer(): Flow { val flowBuilder: Flow = flow { for (num in 1..10) { emit(num) } } return flowBuilder} 먼저 1 부터 10까지 방출하는 flow builder를 만들었다. 2. Intermediaryprivate fun coroutineFlowIntermediary(flowBuilder: Flow): Flow { val newFl..
-
안드로이드 Coroutine Flow - 1 (Flow란?)안드로이드 학습/Android 기술면접 대비 2024. 11. 27. 13:48
안드로이드 App Architecture를 학습하면서 여러 프로젝트를 살펴봤을때 Data Layer(Repository) 부분에서 Coroutine과 함께 flow를 사용하는 하여 데이터를 처리해주는 것을 보았다. 그래서 이번에 flow가 무엇인지 학습해보고 개인 프로젝트에 적용해보려고 한다. 1. Flow란?Flow는 Coroutine 라이브러리 내에서 제공하는 비동기 데이터 스트림입니다. Flow는 데이터 스트림을 비동기적으로 처리하게 해주고 또한 연속적인 데이터 흐름을 처리하기에 적합한 도구이다. Flow는 Coroutine을 기반으로 빌드되며 여러 값을 제공할 수 있다. Flow는 비동기 적으로 계산되는 데이터 스트림 개념이다. 내보낼 값과 동일한 유형이어야 한다. ( Flow는 intege..
-
Compose 학습 - 2 (Composable 함수)카테고리 없음 2024. 11. 23. 21:42
chapter 19 : 컴포저블 함수 개요컴포저블 함수는 Jetpack Compose를 이용해 안드로이드 앱용 User Interface를 구성하는 빌딩 블록이다.이번장에서는 상태 함수, 비상태 함수, 함수 구문, 파운데이션 컴포저블과 머티리얼 컴포저블의 차이 등을 다룬다. Composable 함수 :Composable 함수는 Compose로 사용자 인터페이스를 만들기 위해 이용하는 특수한 코틀린 함수다. @Composable annotation을 사용해서 선언하고 코틀린의 일반 함수와 구별된다. Composable 함수에서는 코틀린 표준 함수를 호출하지만, 표준 함수에서는 Composable 함수를 호출할 수 없다. 전형적인 Compose 기반 UI는 내장 Composable과 Custom Compos..
-
Compose 학습 - 1 (TextView & Slider)책 내용 정리/핵심만 골라 배우는 젯팩컴포즈 2024. 11. 23. 21:18
Chapter 3class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { ComposeStudyTheme { // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialT..
-
[Android_MVVM_CleanArchitecture] 2. Domain Layer오픈소스 공부/Android_MVVM_CleanArchitecture 2024. 11. 21. 15:18
https://github.com/Gun-HelloWorld/Android_MVVM_CleanArchitecture GitHub - Gun-HelloWorld/Android_MVVM_CleanArchitecture: Android MVVM Clean ArchitectureAndroid MVVM Clean Architecture. Contribute to Gun-HelloWorld/Android_MVVM_CleanArchitecture development by creating an account on GitHub.github.com DataLayer 구성 :더보기 Repository에서 RemoteDataSource와 LocalDataSource에서 가져온 데이터를 Mapper를 통해 앱에 알맞게 변..