분류 전체보기

안드로이드/테스트

안드로이드 앱 개발 시 테스트에 대해 학습할 수 있는 커리큘럼

안드로이드 앱을 개발하다 보면 여러 이슈가 생깁니다. 그 이슈를 확인하고 고치기를 반복하다. 개발 중에 test를 한다면 이러한 이슈를 줄일 수 있을 것이라 확신하여 테스트 기법을 공부하고 실습하여 성장하고자 합니다. 이러한 부분을 구글링을 통해 Test와 관련된 정보들을 찾으려하였지만 단편적인 정보들만있있습니다. 그래서 gpt로 앱 개발 시 테스트에 대해 학습할 수 있는 커리큘럼을 제공받아 그커리큘럼대로 체계적으로 학습을 해볼까 합니다.1. 테스트 개념 이해 및 중요성학습 목표: 소프트웨어 테스트의 중요성, 기본 원칙 이해학습 항목:소프트웨어 테스트의 목적안드로이드에서의 테스트 필요성테스트 피라미드 (단위 테스트, 통합 테스트, UI 테스트)2. JUnit을 이용한 단위 테스트학습 목표: 안드로이드에서..

안드로이드/안드로이드

CNA(Chirag Note App) 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. EditText TextWatcher로 검색처리 과부하 리펙토링안드로이드 EditText에서는 TextWatcher를 이용하여 내부의 값 변경이 될 경우 listener를 추가하여 알맞은 동작을 구현할 수 있습니다. 대부분이 상황에는 검색이나 text의 원화표시 같은 동작을 추가합니다. 기존의 NoteApp 같은 경우에도 리사이클러뷰의 적용된 어댑터에서 searchNotes라는 함수를 호출하여 검색 처리를 하고 있습니다.이 코드 자바로 구현되어 있으며 해당 작업은 Timer를 이용하여 비동기처리를 하고 있습니다. 이 코드는 여러 이슈가 생길 수 있습니다. textWatcher에서 바로 해당 작업을 실행하기에 기존의 Timer는 참조되지 않지만 여전히 실행될 것입니다. 그렇지만 타이머를 취소하지 않습..

안드로이드/안드로이드

CNA(Chirag Note App) 클론코딩 & 리펙토링 회고

https://www.youtube.com/playlist?list=PLam6bY5NszYN6-a1wt7yRISWfmYPdkbMu  Android App Development | Notes App | Android StudioHello, in this tutorial series we are going to build an android app called: Notes App. This tutorial series is going to be a FREE complete Android developmen...www.youtube.comChirag Note App을 클론 코딩해 보았습니다.사용 기술스택구분원본리펙토링언어JAVAKotlinUIxmlxml디자인패턴MVCMVVM아키텍처 패턴패키징클린아키텍처DI없음..

안드로이드/안드로이드

CIP(Cat-Image-Provider) 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. Retrofit의 반환형 Call, Response, Flow 중 선택이번 프로젝트에서는 Gson을 이용하여 Json 응답을 처리했습니다. 하지만 Retrofit에서는 이 응답을 Call 형태로 반환하고, 이에 맞는 콜백 인터페이스를 통해 응답을 처리하는 방법과, Response 자료형으로 받아 try-catch 문으로 해당 함수를 실행하는 방법이 있습니다. 이와 유사하게, List 형태로 데이터를 가져온 후, flow 스코프에서 try-catch로 처리하여 결과를 Flow 형태로 전달하는 방법도 가능합니다.Retrofit 결과를 처리하는 방법은 크게 세 가지로 나뉩니다. 이 중 멀티모듈 클린 아키텍처에서 적절한 방법을 찾았는데, Call을 사용하는 경우 데이터 레이어에서 콜백을 처리하면서 도메인이..

안드로이드/안드로이드

CIP(Cat Image Provider) 개발 회고

최근 Clean Architectur를 사용하면서 이러한 구조가 필요한 이유로 책임을 분리하고 유지보수를 쉽게한다는것을 느꼈습니다.그래서 이전에 만들었던 앱이나 특정동작이나 기능을 CleanArchitecture 구조로 만들어보자 생각하였습니다. 그래서 이번에는 Retrofit과 Room 그리고 paging을 사용해보기로하고 Cat Image Provider 라는 앱을 만들었습니다.사용 기술스택구분원본UIxml디자인패턴MVVM아키텍처 패턴멀티모듈 + 클린아키텍처DIHilt통신RetrofitDBRoom이미지 로딩glidePagingJetpack Paging, Room-Paging 과정우선 RestApi를 찾았습니다. 그러다가https://developers.thecatapi.com/view-account/..

안드로이드/안드로이드

TBA(Ticket-Booking-app) 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. Clean Architecture 구조 문제이전의 Planfit 코드와 다르게 이번에는 Repository를 만들었습니다.이전에는 Repository를 따로 만들지 않고 UseCase만으로 구현했기 때문에, 구조에 대한 깊은 고민을 하지 않았습니다. 하지만 이번에 Repository를 구현하고 UseCase의 인터페이스를 분리한 후, 그 구현체를 Data Layer에 두고 사용하다 보니 보일러플레이트 코드가 생기고, 이런 방식에 대해 의문이 들기 시작했습니다. 그래서 Clean Architecture에 대해 다시 찾아보면서, 제가 구조를 잘못 만들었다는 것을 깨달았습니다. Clean Architecture에서는 Repository가 여러 데이터 소스(API, DB 등)를 관리하고, UseCase는 ..

안드로이드/안드로이드

Ticket Booking app - UiLover Android 클론코딩 회고

https://www.youtube.com/watch?v=9aoUe0gPljYTicket Booking app을 클론 코딩해 보았습니다. 사용 기술스택구분원본리펙토링UIxmlxml디자인패턴MVCMVVM아키텍처 패턴패키징클린아키텍처DI없음Hilt통신Firebase RealtimeDatabaseFirebase RealtimeDatabase이미지 로딩glideglide오픈소스 라이브러리chip-navigation-bar(ismaeldivita),BlurView(Dimezis)chip-navigation-bar(ismaeldivita),BlurView(Dimezis) 과정해당 프로젝트는 유튜버분이 단순 화면만 구현하기 위해서 그런지 유지보수를 도와주는 컨벤션이라든가 deprecated 된 함수를 쓴다든가 Act..

안드로이드/안드로이드

Planfit 프로젝트하면서 생긴 이슈 및 해결 ,기술 정리

1. StateFlow를 사용하여 Splash화면에서 알맞은 화면으로 navigation을 하거나  대기하는 역할을 수행해야 되는데 화면의 이동이 원할이 되지 않았습니다. 이전 코드@HiltViewModelclass PlanfitSplashViewModel @Inject constructor( private val getPlanfitLoginType: GetPlanfitLoginType,) : ViewModel() { private val _isLoginFlow = MutableStateFlow(LoginEvent.UnChecked) val isLoginFlow: StateFlow get() = _isLoginFlow fun checkLoginState() = viewM..

안드로이드/안드로이드

Planfit onBoarding 페이지 클론 코딩 회고

현재 서비스 중인 Planfit이라는 앱의 onBoarding페이지를 클론 코딩해 보았습니다.지금까지 클론코딩을 할 때는 강좌나 책 등을 보며 해당 프로젝트를 클론코딩을 했었는데 이번에는https://wwit.design/2023/07/24/planfit/ Lifeplus한국의 UI/UX 모바일 패턴을 수집합니다.wwit.design해당사이트를 참고하여 만들었습니다. 화면만 보고서는 해당 화면이 어떻게 돌아가는지 알 수 없었습니다. 그래서 해당 앱을 설치하고 어떻게 돌아가는지 관찰 후에 해당 화면의 흐름을 다이어그램으로 만들었습니다.다이어그램을 만들다 보니 wwit에 나오는 Planfit페이지는 iOS 환경에서의 이미지라는 것을 알게 되었습니다. 그렇다고 안드로이드 기기에서의 모드화면을 캡처하고 해당 화..

안드로이드/AAC(Android Architecture Components)

[AAC] Paging 정의와 적용

정보를 점진적으로 가져오는 이 프로세스를 페이징이라고 하며 각 페이지는 가져올 데이터 청크에 상응합니다.페이지를 요청하려면 페이징 되는 데이터 소스에는 필요한 정보를 정의하는 쿼리가 필요한 경우가 많습니다. 이 Paging 라이브러리는 앱에서 빠르고 효율적으로 페이징을 할 수 있도록 도와줍니다.  Paging 라이브러리의 핵심 구성요소는 다음과 같습니다.PagingSource: 특정 페이지 쿼리의 데이터 청크를 로드하는 기본 클래스입니다. 데이터 레이어의 일부이며 일반적으로 DataSource 클래스에서 노출되고 이후에 ViewModel에서 사용하기 위해 Repository에 의해 노출됩니다.PagingConfig: 페이징 동작을 결정하는 매개변수를 정의하는 클래스입니다. 여기에는 페이지 크기, 자리표시..

감자씨앗
'분류 전체보기' 카테고리의 글 목록 (2 Page)