Android/Android Core39 [Android/Kotlin] Retrofit에서 인터페이스를 활용한 API 요청 처리 원리 안드로이드에서 네트워크 요청을 쉽게 처리할 수 있도록 도와주는 대표적인 라이브러리인 Retrofit을 공부하면서, 한 가지 궁금한 점이 생겼습니다.Retrofit을 사용할 때 interface를 retrofit.create()에 넘겨주기만 하면 네트워크 통신이 자동으로 이루어진다는 점이었습니다.단순히 메서드를 선언한 인터페이스를 넘겼을 뿐인데, 실제 HTTP 요청이 발생하는 원리가 무엇인지 궁금했습니다.공부하면서 Retrofit이 인터페이스를 동적으로 구현하고, 내부적으로 HTTP 요청을 처리하는 과정을 이해하게 되었습니다.이번 글에서는 Retrofit이 API 요청을 어떻게 자동으로 처리하는지 정리해보겠습니다.Retrofit을 이용한 API 요청 흐름Retrofit을 사용할 때 interface를 정의.. 2025. 3. 12. [Android/Kotlin] ViewModel 개념과 ViewModelStore를 통한 구성 변경 시 상태 유지 원리 안드로이드 컴포넌트의 생명 주기에 따라 데이터가 유실되지 않도록 하기 위해 ViewModel을 사용하는 것이 일반적이지만, 문득 구성 변경(Configuration Change)으로 인해 Activity가 파괴되는데도 어떻게 ViewModel이 유지될 수 있을까? 하는 궁금증이 들었습니다.ViewModel이 어떻게 상태를 관리하고 구성 변경 시에도 유지될 수 있는지 이해하기 위해 내부 코드를 직접 분석하고 정리한 내용을 공유하겠습니다. 또한, ViewModel의 개념과 사용 시 고려해야 할 사항들도 함께 정리하겠습니다.ViewModel이란?구성 변경이 발생해도 데이터를 유지하도록 설계된 컴포넌트입니다.Activity나 Fragment보다 생명 주기가 깁니다.하지만 앱이 종료되면 ViewModel도 함께 .. 2025. 3. 10. [Android] Activity 생명주기 정리 Activity 생명주기(Activity Lifecycle)는 앱이 시작되고 종료될 때, 포커스를 얻거나 잃을 때, 백그라운드로 전환될 때 등 다양한 상황에서 호출되는 메서드들의 흐름을 의미합니다. 이를 이해하면 앱의 상태를 올바르게 관리할 수 있으며, 자원 누수나 비정상적인 동작을 방지할 수 있습니다.1. Activity 생명주기 콜백 메서드메서드설명onCreate()Activity가 처음 생성될 때 호출됩니다. 초기화 작업(뷰 세팅, 데이터 바인딩 등)을 여기서 합니다.onStart()Activity가 사용자에게 보이기 직전에 호출됩니다. (하지만 아직 포커스는 없음)onResume()Activity가 포그라운드에 있으며 사용자와 상호작용 가능한 상태일 때 호출됩니다.onPause()다른 Activi.. 2025. 2. 24. [Android/Kotlin] 비상 사운드 효과 구현: 강제 볼륨 조절 비상 상황에서 긴급 신고를 했을 때, 기기의 볼륨이 꺼져 있거나 낮게 설정되어 있는 경우에도 사운드 알림이 들릴 수 있도록 하는 기능이 필요했습니다. 처음에는 AudioManager.STREAM_ALARM 타입으로 설정되어 있어 강제로 볼륨을 올리는 기능이 제대로 작동하지 않았습니다. 하지만 이를 AudioManager.STREAM_MUSIC 타입으로 변경한 후 정상적으로 동작하게 되었고, 이 과정을 통해 얻은 구현 방법을 공유하고자 합니다.구현 코드아래 코드는 기기의 볼륨을 강제로 최대치로 설정하고 비상 사이렌 소리를 재생하는 방법을 보여줍니다.private fun emergencyEffect(isPlay: Boolean) { if (isPlay) { // AudioManager 시스.. 2024. 12. 13. [Android/Kotlin] 뒤로가기 기능을 구현하는 방법: OnBackPressedDispatcher 활용법 안드로이드 개발을 하다 보면, 뒤로가기 버튼을 눌렀을 때 특정 동작을 처리해야 하는 경우가 자주 발생합니다.기존에는 onBackPressed 메서드를 오버라이드하여 이를 구현했지만, 안드로이드 12(API 31)부터 이 메서드가 Deprecated되었습니다. 대신 OnBackPressedDispatcher를 이용한 새로운 방식이 도입되었습니다.이번 글에서는 안드로이드에서 뒤로가기 기능을 구현하는 새로운 방법과 그 이유를 정리 해 두겠습니다. 왜 onBackPressed가 Deprecated되었을까?onBackPressed는 뒤로가기 버튼의 동작만을 단순히 처리하도록 설계된 메서드였습니다. 하지만 Fragment와 Lifecycle 기반 컴포넌트가 점차 중요해지면서 뒤로가기 이벤트를 더 유연하게 처리할 필.. 2024. 12. 3. [Android/Kotlin] Kakao Map V2: 특정 좌표를 모두 화면에 표시하기 Kakao Map V2에서는 지도에서 특정 좌표들이 모두 보이도록 카메라를 자동으로 이동 및 확대/축소할 수 있습니다.이를 위해 kakaoMap.moveCamera(CameraUpdateFactory.fitMapPoints()) 메서드를 활용할 수 있습니다.이번 글에서는 출발지와 도착지가 지도 화면에 동시에 보이도록 카메라를 설정하는 방법을 공유 하고자 합니다. 문제 상황처음 지도에 출발지와 도착지의 마커를 표시했을 때, 두 위치가 서로 멀리 떨어져 있으면 한 화면에 두 마커가 모두 나타나지 않는 문제가 있었습니다.이런 경우, 사용자는 출발지나 도착지 중 하나만 확인할 수 있어 불편함을 느낄 수 있습니다.이를 해결하기 위해 Kakao Map V2의 CameraUpdateFactory.fitMapPoint.. 2024. 12. 2. [Android/Kotlin] API Key 숨기기: buildConfigField 활용법 안드로이드 앱 개발에서는 API Key와 같은 민감한 정보를 소스 코드에 하드코딩하면 보안상 위험합니다.이러한 문제를 방지하기 위해 **buildConfigField**를 사용하여 API Key를 안전하게 관리해야 하지만, 매번 구현할 때마다 세부적인 과정을 잊어버리곤 했습니다. 그래서 이번 기회에 정리해 두고 필요할 때 빠르게 참고할 수 있도록 내용을 남깁니다. 1. 프로젝트 설정: local.properties에 API Key 저장하기프로젝트 루트 디렉토리의 local.properties 파일에 API Key를 추가합니다. 이 파일은 기본적으로 .gitignore에 포함되어 있어 Git 저장소에 업로드되지 않습니다.예시: local.propertiesKAKAO_NATIVE_APP_KEY=your_ka.. 2024. 12. 2. [Android/Kotlin] 안드로이드 앱에서 카카오 SDK를 사용해 OAuth 로그인을 구현하는 방법 이번 글에서는 카카오 SDK를 사용해 안드로이드 앱에 OAuth 로그인을 구현하는 과정을 기록 해 두고자 합니다. 1. 카카오 SDK 설치먼저, 카카오 SDK를 프로젝트에 추가해야 합니다.Gradle 설정1. 프로젝트 수준 build.gradle 파일에 Maven 저장소 추가.allprojects { repositories { google() mavenCentral() maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' } }} 2.앱 수준 build.gradle 파일에 카카오 SDK 종속성 추가.dependencies { implementation "com.kakao.sdk:v2.. 2024. 11. 9. [Android/Kotlin] EncryptedSharedPreferences 사용하기: 보안 강화된 데이터 저장 방법 안드로이드 앱 개발 시, 간단한 데이터 저장을 위해 흔히 SharedPreferences를 사용합니다.하지만 이 방식은 기본적으로 암호화되지 않은 데이터를 저장하므로 보안에 취약할 수 있습니다.특히 사용자의 인증 토큰, 계정 정보와 같은 민감한 데이터를 다룰 때는 암호화가 필수적입니다.여기서 EncryptedSharedPreferences가 유용하게 사용될 수 있습니다.이번 글에서는 EncryptedSharedPreferences가 무엇인지, 왜 더 안전한지, 어떻게 사용하는지에 대해 다뤄보겠습니다. 1. EncryptedSharedPreferences란?EncryptedSharedPreferences는 안드로이드에서 민감한 데이터를 안전하게 저장하기 위해 제공하는 암호화된 데이터 저장 방식입니다. 일반.. 2024. 11. 8. 이전 1 2 3 4 5 다음 반응형