본문 바로가기

Android/기본9

[Android] 앱 아키텍처 가이드 오늘은 Android 개발을 위한 아키텍처 가이드라인을 소개해드리려고 해요. Android 앱을 개발할 때 좋은 구조를 가지는 것은 유지보수와 확장성 측면에서 매우 중요해요. 이 글에서는 Google이 추천하는 아키텍처 패턴과 그 구성 요소들을 쉽게 설명해볼게요~1. Android 앱 아키텍처란?앱 아키텍처는 앱의 구성요소들 간의 관계와 기능을 정의해요. 예를 들어, 데이터를 어디에 저장하고, 화면에 어떻게 보여줄지를 정리하는 거죠. 좋은 아키텍처는 앱이 커져도 유지보수가 쉽고, 견고하게 동작하도록 도와줘요. 크게 UI 레이어, 도메인 레이어와 데이터 레이어로 나누어 생각해볼 수 있어요.1. 관심사 분리가장 중요한 원칙 중 하나는 관심사 분리예요. `Activity`나 `Fragment` 같은 UI 클래.. 2024. 11. 12.
[Android]안드로이드 스튜디오 로그(Log) 가이드 오늘은 안드로이드 스튜디오에서 사용되는 로그에 대해서 알아보려고 해요. 로그(Log)는 개발자가 애플리케이션을 디버깅하거나 상태를 확인하는 데 매우 유용한 도구예요. 안드로이드 개발을 하다 보면 로그를 자주 사용하게 되는데요, 그 이유와 사용 방법에 대해 함께 알아볼게요.1. 로그의 중요성안드로이드 애플리케이션을 개발하면서 코드를 실행해도 예상대로 동작하지 않거나, 특정 상황에서 오류가 발생할 때가 있어요. 이럴 때 로그를 활용하면 애플리케이션 내부에서 무슨 일이 일어나는지 쉽게 파악할 수 있어요. 로그는 개발자에게 애플리케이션의 상태를 텍스트로 보여주기 때문에, 문제를 찾고 해결하는 데 큰 도움이 돼요.2. 로그 레벨`Log` 클래스는 다섯 가지 주요 로그 레벨을 제공해요. 각 로그 레벨은 용도와 중요.. 2024. 11. 10.
[Android] Android 자동 테스트 작성 및 유형 자동 테스트는 앱의 기능을 검증하고 코드 변경 후에도 안정적으로 동작하는지 확인하는 중요한 과정이에요. Android에서는 로컬 테스트와 계측 테스트라는 두 가지 주요 테스트 유형을 사용할 수 있습니다. 이 두 가지 테스트의 차이점과 작성 방법을 아래에서 설명해볼게요.1. 자동 테스트 유형로컬 테스트로컬 테스트는 개발자의 컴퓨터(워크스테이션)에서 실행되며, 소규모 코드의 정확성을 검증하는 데 사용돼요. 함수, 클래스, 속성 등의 작은 단위에서 발생할 수 있는 버그를 빠르게 확인할 수 있습니다.특징함수, 클래스, 속성 등 소규모 코드 단위 테스트Android 스튜디오에서 로컬 테스트를 자동으로 실행 가능빠른 피드백과 간편한 실행 환경 제공계측 테스트계측 테스트는 UI 상호작용을 포함한 앱의 실제 환경에서의.. 2024. 9. 6.
[Android] 발생할 수 있는 Exception종류와 처리 방법 안녕하세요. 개발을 하다 보면 다양한 예외 상황에 직면하게 돼요. 이러한 예외는 프로그램의 흐름을 방해하고 예상치 못한 종료를 초래할 수 있기 때문에, 각 예외의 특성을 이해하고 적절히 처리하는 것이 중요해요.오늘은 개발 중 자주 발생하는 Exception과 그 처리 방법에 대해 알아볼게요.1. NullPointerException NullPointerException은 null 객체의 속성이나 메서드를 호출하려고 할 때 발생해요. Kotlin은 기본적으로 null-safety를 지원하지만, 자바 라이브러리와의 상호작용 등으로 인해 발생할 수 있어요. val str: String? = nullval length = str!!.length // NullPointerException 발생 이를 방지하기 위해.. 2024. 6. 14.
[Android] Deep Link 딥링크 딥링크의 작동 원리딥링크는 URL 형태로 제공되며, 이 URL을 클릭하면 앱의 특정 부분으로 직접 이동할 수 있습니다. 웹에서 특정 페이지의 링크를 클릭해 바로 그 페이지로 이동하는 것과 유사한 원리입니다. 하지만 딥링크는 앱 내부의 특정 화면으로 직접 이동한다는 점에서 차이가 있습니다.딥링크의 종류딥링크 : 앱이 이미 설치되어 있어야만 작동하는 링크입니다. 앱이 없으면, 링크를 눌러도 아무 일도 일어나지 않습니다.웹 URL 딥링크 : 앱이 설치되어 있지 않으면 웹사이트로 이동하는 링크입니다. 이 방식으로, 앱이 없어도 내용을 볼 수 있습니다.앱 링크 : 가장 진화된 형태의 딥링크로, 앱이 있으면 바로 앱으로, 없으면 웹사이트로 이동합니다.딥링크의 장점사용자 경험 개선: 사용자는 검색이나 여러 단계의 탐.. 2024. 3. 18.
[Android] MVVM 패턴(Model-View-ViewModel) 복잡한 로직과 데이터 관리, 그리고 반응형 UI를 효과적으로 다루기 위해서는아키텍처 패턴이 필요합니다. 오늘은 MVVM(Model-View-ViewModel) 아키텍처 패턴에 대해 이야기하고자 합니다. MVVM이란? MVVM(Model-View-ViewModel) 아키텍처 패턴은 코드의 구조를 깔끔하게 유지하고, 테스트를 용이하게 하며, 유지보수를 간편하게 만드는 현대적인 솔루션입니다. MVVM은 앱의 비즈니스 로직과 사용자 인터페이스를 효과적으로 분리함으로써 애플리케이션의 확장성과 유지보수성을 대폭 향상시킵니다. MVVM 장점 코드 분리: 비즈니스 로직과 UI 로직의 철저한 분리로 코드 관리가 용이해집니다. 재사용성: 뷰모델을 통한 로직의 재사용성이 높아지며, 다양한 뷰에서 동일한 뷰모델을 사용할 수 .. 2024. 3. 14.
[Android] Retrofit2와 RxJava의 통신 실패 관리 Retrofit2와 RxJava를 함께 사용하면, 비동기 네트워크 요청을 보다 선언적이고 반응형으로 처리할 수 있습니다. 안녕하세요. Android앱 개발 시 네트워크 요청을 Retrofit2과 RxJava 를 많이 이용하는데요. 처음엔 RxJava의 'Throwable'과 Retrofit2의 'Response.isSuccessful() = false인 경우의 차이를 잘 몰랐었어요. 이 글에서는 차이가 무엇인지 설명해보려고 합니다. Retrofit2와 RxJava의 조합 Retrofit2는 HTTP API를 자바 인터페이스로 쉽게 변환해주는 강력한 라이브러리입니다. RxJava와의 결합은 네트워크 요청의 비동기 처리를 더욱 효율적이고 선언적으로 만들어 줍니다. 이 조합을 통해 개발자는 네트워크 상태, 데.. 2024. 3. 13.
[Android] Activity Lifecycle 액티비티 생명주기 콜백을 잘못 구현할 경우 발생할 수 있는 문제 사용자가 앱을 사용하는 도중에 전화가 걸려오거나 다른 앱으로 전환할 때 비정상 종료되는 문제 사용자가 앱을 활발하게 사용하지 않는 경우 귀중한 시스템 리소스가 소비되는 문제 사용자가 앱에서 나갔다가 나중에 돌아왔을 때 사용자의 진행 상태가 저장되지 않는 문제 화면이 가로 방향과 세로 방향 간에 회전할 경우, 비정상 종료되거나 사용자의 진행 상태가 저장되지 않는 문제 1. onCreate() Activity가 처음 생성될 때 한 번만 호출됩니다. 필수로 구현해야합니다. 초기화 작업을 수행하거나 UI 구성을 설정합니다. setContentView()를 호출하여 Activity의 사용자 인터페이스 레이아웃을 정의해야 합니다. onCreate()가 완료되면 onSt.. 2024. 3. 8.
[Android] App components 앱 구성요소 Android 앱의 필수 구성요소입니다. 각 구성요소는 시스템이나 사용자가 앱에 진입할 수 있는 진입점입니다. Activity(액티비티) 안드로이드 애플리케이션의 사용자 인터페이스(UI)를 담당합니다. 사용자가 상호작용하는 화면 단위를 의미(버튼, 텍스트 필드, 이미지 등 UI요소 포함) 합니다. 사용자 이벤트(예: 버튼 클릭, 화면 터치 등)에 응답하여 작업을 수행합니다. 여러 액티비티를 조합하여 앱의 전체 기능 구현합니다. Services(서비스) 여러 가지 이유로 앱을 백그라운드에서 계속 실행하기 위한 범용 진입점. UI 없이 작업을 수행합니다. 주로 네트워크 호출, 파일 다운로드, 데이터베이스 관리 등 장기 실행되는 작업을 처리하는 데 사용합니다. 다른 구성 요소와 연동하여 실행되거나 독립적으로 .. 2024. 3. 6.