안드로이드 6.0 (API 23)부터 도입된 런타임 권한 시스템은 앱이 필요한 권한을 실행 중에 요청하도록 요구합니다. 이는 사용자의 보안을 강화하고, 불필요한 권한 요청을 최소화하는 데 목적이 있습니다. 이번 포스팅에서는 런타임 권한을 요청하고 허가받는 방법을 단계별로 알아보겠습니다. 1. 매니페스트에서 권한 선언하기 권한을 요청하기 전에, AndroidManifest.xml에 필요한 권한을 먼저 선언해야 합니다. 2. 런타임 권한 요청하기 권한이 필요한 기능을…
안드로이드 백그라운드에서 작업 유지하게 하는 방법
안드로이드 앱에서는 백그라운드에서 실행해야 하는 작업들이 많습니다. 예를 들어, 네트워크 요청, 데이터베이스 업데이트, 알람 설정 등이 이에 해당합니다. 안드로이드에서는 다양한 방식으로 백그라운드 작업을 처리할 수 있으며, 적절한 방법을 선택하는 것이 중요합니다. 1. 백그라운드 작업을 처리하는 주요 방식 1.1 코루틴(Coroutines) 코루틴을 사용하면 가벼운 스레드를 활용하여 백그라운드 작업을 쉽게 처리할 수 있습니다. 1.2 WorkManager (지속적인 백그라운드 작업)…
android ViewModel 사용 하기, 완벽 정리
ViewModel이란? 안드로이드에서 ViewModel은 UI 관련 데이터를 저장하고 관리하는 아키텍처 컴포넌트입니다. 이는 화면 회전과 같은 구성 변경(Configuration Changes)에도 데이터를 유지할 수 있도록 도와줍니다. android ViewModel이 필요한 이유 ViewModel 기본 사용법 1. ViewModel 클래스 생성 2. Activity/Fragment에서 ViewModel 사용하기 ViewModel + ViewModelFactory (생성자 파라미터 사용) ViewModel에서 생성자 매개변수를 사용하려면 ViewModelProvider.Factory를 구현해야 합니다. ViewModel과 SavedStateHandle (데이터 유지) 안드로이드에서…
[Android] Kotlin Coroutine으로 비동기 처리하기
안드로이드 개발에서는 네트워크 요청, 데이터베이스 읽기/쓰기, 파일 처리 등 시간이 오래 걸리는 작업을 비동기적으로 처리해야 합니다.과거에는 AsyncTask 또는 Thread + Handler 조합을 사용했지만, 현재는 Kotlin Coroutine을 이용한 방식이 가장 효율적인 방법으로 자리 잡았습니다. 이번 포스팅에서는 Coroutine이 무엇인지, 어떻게 사용하는지, 실전 예제까지 하나씩 알아보겠습니다. 1. Coroutine이란? Coroutine(코루틴)은 비동기 작업을 간결하고 직관적으로 작성할 수 있도록 도와주는 Kotlin의…
[Android] Navigation으로 화면 전환 관리하기
안드로이드 애플리케이션에서 화면 전환은 중요한 요소입니다. 사용자가 어떤 행동을 했을 때, 그에 맞는 화면을 보여주어야 하기 때문입니다. 이전에는 Intent를 사용해 화면을 전환하는 방식이 일반적이었으나, Navigation Component가 도입되면서 네비게이션을 더욱 직관적이고 효율적으로 처리할 수 있게 되었습니다. Navigation Component란? Navigation Component는 Jetpack 라이브러리의 일부로, 앱 내 화면 간의 네비게이션을 관리하고 쉽게 처리할 수 있는 도구입니다. 이를 사용하면…
[Android] LiveData – 실시간 UI 업데이트를 위한 필수 컴포넌트
안드로이드 개발에서 UI와 데이터를 효율적으로 연결하는 방법 중 하나가 LiveData이다. LiveData는 데이터가 변경될 때 자동으로 UI를 업데이트할 수 있도록 도와주며, 이를 통해 메모리 누수 없이 안전한 방식으로 데이터를 관리할 수 있다. 1. LiveData란? LiveData는 Android Jetpack의 Architecture Components 중 하나로, Lifecycle-aware(생명주기 인식) 기능을 제공하는 Observable 데이터 홀더 클래스이다. 즉, 데이터가 변경될 때 자동으로 감지하여 UI에…
[Android] 프래그먼트 생명주기 및 데이터 유지 전략
안드로이드 개발에서 프래그먼트(Fragment)는 액티비티 내부에서 독립적으로 동작할 수 있는 UI 구성 요소입니다.특히 뷰페이저(ViewPager), 내비게이션(Navigation) 등 다양한 구조에서 활용되며, 올바른 생명주기 관리가 필수입니다. 이번 글에서는 프래그먼트 생명주기 및 데이터 유지 전략을 자세히 알아보겠습니다. 1. 프래그먼트(Fragment)란? 📌 프래그먼트의 특징 프래그먼트는 액티비티와는 다른 생명주기를 가지며, 적절한 상태 관리를 해야 메모리 누수 및 성능 문제를 방지할 수 있습니다. 💡…
[Android] 안드로이드 액티비티 생명주기 정리 및 활용 방법
안드로이드 앱을 개발할 때 액티비티(Activity) 생명주기를 이해하는 것은 필수입니다. 생명주기를 잘 활용하면 앱의 성능을 최적화하고, 불필요한 리소스 낭비를 방지할 수 있습니다. 이번 글에서는 액티비티 생명주기의 개념과 효과적인 활용 방법을 정리해보겠습니다. 1. 액티비티 생명주기란? 액티비티는 앱에서 사용자와 직접 상호작용하는 화면 단위의 구성 요소입니다.안드로이드에서는 앱이 실행되거나 중단될 때 적절한 상태를 관리하기 위해 액티비티 생명주기(Activity Lifecycle)를 제공합니다. 📌…
Android 포그라운드 서비스(ForegroundService) 예제 및 개념
안드로이드 개발에서 포그라운드 서비스(Foreground Service)는 사용자에게 직접적으로 인지되어야 하는 중요한 작업을 백그라운드에서 수행할 때 사용됩니다. 이러한 서비스는 상태 표시줄에 지속적인 알림을 표시하여 사용자에게 서비스가 실행 중임을 알립니다. 이번 포스팅에서는 포그라운드 서비스의 개념, 특징, 구현 방법, 그리고 주의사항까지 상세하게 다루겠습니다. 1. 포그라운드 서비스란? 포그라운드 서비스는 사용자가 인지할 수 있는 중요한 작업을 백그라운드에서 수행하는 서비스입니다. 예를 들어,…
Android 11이전에 사용한 백그라운드 작업 – IntentService 대안
안드로이드 개발에서 백그라운드 작업을 처리하기 위해 IntentService는 한때 널리 사용되던 클래스였습니다. 그러나 Android 8.0(Oreo)부터 도입된 백그라운드 실행 제한으로 인해 IntentService는 더 이상 권장되지 않으며, Android 11부터는 공식적으로 사용이 중단되었습니다. IntentService의 주요 특징은 다음과 같습니다: 그러나 앞서 언급한 바와 같이, IntentService는 더 이상 사용이 권장되지 않습니다. 대신, WorkManager 또는 JobIntentService와 같은 최신 백그라운드 작업 처리 도구를…