Android 19

[Java][Android] BuildConfig을 사용하여 안드로이드 앱에서 특정 값을 전역으로 사용하기 / 모든 클래스 사용 /

안녕하세요,AWS를 1년간 무료로 사용하고 있었고 그 기한이 다 되서 이제 로컬 서버로 대신하려고합니다. 현재 만들어진 앱의 코드는 해당 서버 주소 값을 모든 클래스에 하드코딩으로 작성하였고이번 로컬 서버로 옮기는 작업에서 하나 하나 찾아가면서.... 전부 수정을 완료했습니다.. 이로써 느낀점은... 한번에 바꿀수 있는 방법이 있지 않을까? 생각하여 찾아보니 BuildConfig 을 사용해서 빌드에 설정한 값들을 사용 할 수 있게 할 수 있었습니다. 또한 다른 값들을 지정하여 사용 할 수 있었습니다. 예제코드 # build.gradle (Module: app) plugins { alias(libs.plugins.android.application)}android { namespace 'com...

Android 2025.08.02

[Java][Android] Shared Element Transition 사용하여 화면이 커지면서 전환 / 부드럽게

Shared Element Transition을 사용해야 할까요? 앱 사용중에 목록에서 이미지를 탭했을 때 상세 화면으로 넘어갈 때 이미지가 부드럽게 커지면서 나타나거나, 목록 아이템의 텍스트가 상세 화면의 제목으로 자연스럽게 이어지는 것을 본 적이 있으신가요? 바로 그것이 Shared Element Transition입니다. Shared Element Transition, 어디에 사용하면 좋을까요?이미지 목록 & 상세 보기: 가장 대표적이고 흔하게 사용되는 예시입니다. 이미지 목록에서 특정 이미지를 탭하면, 해당 이미지가 부드럽게 커지면서 상세 화면의 이미지로 전환됩니다. 텍스트나 설명도 함께 전환될 수 있습니다. 예시: 소셜 미디어 앱의 피드, 사진 갤러리 앱뉴스 기사 목록 & 상세 기사: 뉴스 기사..

Android 2025.07.21

[Java][Android] RXJava 사용하기 / AsyncTask의 대체

AsyncTask의 대체안드로이드 개발에서 비동기 처리는 사용자 경험을 해치지 않고 백그라운드에서 시간이 오래 걸리는 작업(네트워크 통신, 데이터베이스 접근 등)을 처리하는 데 필수적입니다. 과거에는 AsyncTask가 이러한 비동기 처리를 위한 손쉬운 방법으로 널리 사용되었습니다. 하지만 AsyncTask는 몇 가지 중요한 설계상의 단점(예: 메모리 누수 위험, 유연성 부족, 복잡한 스레드 관리의 어려움) 때문에 더 이상 권장되지 않습니다. https://developer.android.com/reference/android/os/AsyncTask AsyncTask | API reference | Android Developers developer.android.com 따라서 안드로이드는 Kot..

Android 2025.07.13

[Java][Android] 안드로이드 자바 버튼 연속, 연타 방지 방법

왜 버튼 연타 방지가 필요한가요?서버 부하 증가: 사용자가 버튼을 빠르게 여러 번 누르면, 각 클릭마다 서버로 API 요청이 중복해서 전송될 수 있습니다. 이는 서버 리소스를 불필요하게 소모시키고, 심한 경우 서비스 장애로 이어질 수 있습니다. 의도치 않은 데이터 중복 생성/수정: 예를 들어 '게시글 작성' 버튼을 연타하면 동일한 내용의 게시글이 여러 개 생성될 수 있습니다. 사용자 경험(UX) 저하: 앱이 반복적인 요청으로 인해 느려지거나, 예기치 않은 동작을 보이면 사용자는 불편함을 느낍니다. 클라이언트 리소스 낭비: 불필요한 네트워크 요청은 사용자의 데이터 소모를 늘리고, 배터리 사용량에도 영향을 줄 수 있습니다. 마지막 클릭 시간으로 연타 방지 (Throttling)마지막으로 유효한 클릭이 발생한..

Android 2025.06.02

[Java][Android] SharedPreferences 데이터 암호화 하기!

내 앱의 비밀번호, SharedPreferences에 그냥 저장해도 될까? 🤫 EncryptedSharedPreferences로 안전하게!안녕하세요, 안드로이드 개발자 여러분! 앱 설정을 저장하거나 간단한 사용자 데이터를 유지할 때 SharedPreferences는 정말 편리한 도구입니다. 하지만 여기에 사용자 ID, 토큰, 심지어 (절대 그러면 안 되지만) 비밀번호 같은 민감한 정보를 그대로 저장하고 계신가요? 😱 루팅된 기기에서는 SharedPreferences 파일에 쉽게 접근하여 내용을 볼 수 있다는 사실, 알고 계셨나요? 오늘은 이러한 보안 문제를 해결하고, SharedPreferences에 저장되는 데이터를 안전하게 암호화하는 방법, 바로 **EncryptedSharedPreference..

Android 2025.05.26

[Java][Android] 화면 회전, 메모리 부족 onSaveInstanceState()로 데이터 지키기

안녕하세요, 안드로이드 앱을 만들다 보면 사용자가 화면을 가로로 돌리거나 세로로 돌릴 때, 입력했던 데이터나 현재 상태가 사라지는 경험을 해보신 적 있으신가요? 오늘은 이 문제를 해결하는 가장 기본적인 방법 중 하나인 onSaveInstanceState()와 onRestoreInstanceState()에 대해 알아보겠습니다. 왜 사라질까요?안드로이드에서 화면 방향이 변경되면, 현재 액티비티는 파괴(Destroy)된 후 다시 생성(Create)됩니다.이 과정에서 액티비티 내에 저장되어 있던 멤버 변수들의 값은 초기화되어 버립니다. 대처하기안드로이드는 이런 상황을 대비해 임시 데이터를 저장하고 복원할 수 있는 메커니즘을 제공합니다. 바로 onSaveInstanceState()와 onRestoreInstan..

Android 2025.05.19

[Java][Android]SMTP 지메일(Gmail) 연동하여 사용하기

연동할 지메일 계정으로 들어가 설정에서 모든 설정보기 클릭 다음 메뉴에서 전달 및 POP/IMAP 선택 후 아래와 같이 설정구글 오른쪽 상단 구글 계정 관리 클 보안 클릭 후 앱 비밀번호 검색 (검색 바로해도 상관없음) 개발에 사용 할 앱 이름이나(테스트 이름, 앱 이름 등등) 설정하면 비밀번호가 나온다 이런식으로 나온다. 잘 복사해서 저장하

Android 2025.05.13

[Java][Android] 안드로이드 가속계(accelerometer)센서, 흔들림 감지 예제

1. 개요안드로이드의 가속도계(Accelerometer) 센서를 이용하면 기기의 움직임, 방향, 흔들림 등을 감지할 수 있습니다.이 예제에서는 기기가 흔들렸을 때 특정 동작(예: 토스트 메시지 출력)을 실행하는 기본적인 흔들림 감지 앱을 만들어 보겠습니다.2. 왜 사용할까요??가속도계를 사용하면 다음과 같은 동작 기반 인터랙션을 구현할 수 있습니다:기기를 흔들어 기능 실행 (예: 랜덤 뽑기, 새로고침)사용자의 움직임 감지 (만보기, 피트니스 앱)게임 컨트롤러로 사용 (기울이기, 흔들기)보안 기능 (예: 강제 흔들 때 긴급 메시지 전송)3. 어디에 사용하면 좋을까요???예시설명랜덤 추첨 앱흔들면 결과를 무작위로 선택QR 스캐너흔들면 플래시 ON/OFF메모 앱흔들면 ‘실수로 지운 항목 복구’게임기기를 기울이..

Android 2025.05.12

[Java][Android] WorkManager로 백그라운드 작업 하기

개발에 따라 사용자와의 상호작용과 별개로 처리해야하는 작업들이 있습니다.: 예를들어 서버에서 데이터를 받아오거나, 파일을 저장하거나, 복잡한 연산이 필요한 경우 등등 여러가지 가 있습니다. 이런작업들을 화면을 그리는 메인 스레드 (UI 스레드)에서 직접 처리하면 ANR 오류 (애플리케이션이 응답하지 않습니다) 가 발생합니다. 고민을 해결하기 위해 Google에서는 Android Jetpack 라이브러리의 일부로 WorkManager를 선보였습니다. WorkManager는 백그라운드 작업을 처리할 수 있도록 합니다. 1. WorkManager란?WorkManager는 안드로이드 Jetpack 라이브러리의 핵심 구성 요소 중 하나로, 지연 가능하고(Deferrable) 실행이 보장되는(Guaranteed) ..

Android 2025.05.05

[Java][Android] 안드로이드 웹 스크래퍼 만들기: Jsoup

안녕하세요 이번에는 웹 페이지 내용들중 특정 부분의 텍스트를 안드로이드 앱으로 가져오겠습니다. 그럼 왜 웹 스크래퍼를 만들어서 사용할까요?자동화된 데이터 수집반복적으로 웹페이지에서 정보를 복사해오는 번거로운 작업을 자동화합니다.시간과 노력을 절약할 수 있습니다.외부 데이터 활용기존에 제공되지 않는 API 없이도 필요한 정보를 활용할 수 있습니다.예: 특정 웹페이지의 데이터만 제공될 경우 직접 스크래핑으로 데이터 수집커스터마이징 가능원하는 데이터를 선택적으로 추출할 수 있어 효율적입니다.특정 요소(예: 제목, 본문, 이미지 등)를 선택적으로 처리 가능앱 기능 확장실시간 정보를 제공하는 앱을 제작하거나, 외부 데이터를 기반으로 새로운 기능을 제공할 수 있습니다.경제적 효율성비용이 드는 API를 사용하지 않아..

Android 2025.01.06