반응형

전체 글 28

[Error] Android 8에서 투명 Activity의 orientation 설정 시 앱 강제 종료되는 현상

Android 8에서 투명 Activity의 화면 방향 제한 시Android 8에서 투명 Activity의 화면 방향 제한 시, 아래와 같은 오류 발생함며 앱 강제 종료되는 현상이 있습니다. IllegalStateException: Only fullscreen opaque activities can request orientation Android 8 버그이며, 8.1부터는 오류 발생하지 않고 있습니다.https://issuetracker.google.com/issues/68454482?pli=1

Android/error 2026.01.08

[Android] Android 16의 화면 방향 및 크기 조절 변경 사항

Android 16의 화면 방향 및 크기 조절 변경 사항은?Android 16에서는 앱이 플랫폼 수준에서 화면 방향 및 크기 조절을 제한하는 기능을 제거하고, 다양한 화면 크기와 방향에 원활하게 적응하는 일관된 적응형 앱 모델로 전환합니다.이러한 변화는 사용자 기대에 더욱 부합하는 동작을 통해 파편화를 줄이고, 사용자가 선호하는 화면 방향을 존중하여 접근성을 향상시킬 것입니다. 대상 기기는?Android 16부터 앱의 방향 및 크기 조절을 제한하는 데 사용되는 매니페스트 속성과 런타임 API를 단계적으로 제거하여 다양한 기기에서 많은 앱의 사용자 경험을 개선할 예정입니다.이러한 변경 사항은 우선 앱이 큰 화면에서 실행될 때 적용됩니다.여기서 "큰 화면"이란 디스플레이의 작은 변의 길이가 600dp 이상..

Android/sdk 2025.12.22

[Android] ActivityResultLauncher launch() 호출 시 IllegalStateException 원인과 해결방법

ActivityResultLauncher launch() 호출 시 IllegalStateException 가 발생하는 원인은?안드로이드 Activity Result API를 쓰다 보면 가끔 위의 예외를 만나게 됩니다. registerForActivityResult()는 Lifecycle STARTED 이전에 등록해야 하고,ActivityResultLauncher.launch()는 Lifecycle STARTED 이상에서만 호출해야 합니다. Activity Result API의 수명주기 계약:등록(register) 은 Lifecycle이 STARTED가 되기 전(대개 onCreate)에 해야 함.→ 그래야 시스템이 결과 콜백을 안전하게 재연결/복원 가능.실행(launch) 은 Lifecycle이 START..

Android/error 2025.10.15

삼성, 드디어 ‘트라이폴드 폰’ 출시 임박 : 두 번 접는 폴더블

삼성전자가 마침내 화면을 두 번 접는 ‘트라이폴드(Trifold)’ 스마트폰을 시장에 내놓는다.삼성 폴드 플렉스 G 라고도 부르고 있다. 삼성은 2019년 세계 최초로 폴더블 스마트폰 ‘갤럭시 폴드’를 선보이며 시장을 이끌었지만,최근 몇 년 사이 중국 화웨이와 모토로라에 점유율을 빼앗긴 상황.이번 트라이폴드폰은 삼성의 폴더블 기술력 복귀 신호탄이 될 것으로 보인다.📱 트라이폴드 구조 : “두 번 접히는 10인치 대화면”업계에 따르면, 삼성전자는 이르면 10월 말 첫 트라이폴드 폰을 공개할 예정이다.디자인은 기존 폴드 시리즈와 달리,외부 화면이 가운데에 오고, 양쪽 패널을 안쪽으로 접는 형태다. 외부 화면: 약 6.5인치 (갤럭시 폴드 시리즈 수준)완전히 펼쳤을 때: 약 10인치 태블릿급 디스플레이지난달..

[Android] 인앱 업데이트 기능 구현

인앱 업데이트 기능은?기기에서 앱을 최신 버전 상태로 유지하며 새로운 기능을 사용해보게끔 할 수 있습니다.인앱 업데이트는 활성 사용자에게 앱을 업데이트하라고 메시지를 표시해주는 Google Play Core 라이브러리 기능입니다.인앱 업데이트 기능은 Android 5.0 이상의 기기에서만 지원되며, APK 확장 파일을 사용하는 앱과는 호환되지 않습니다. 인앱 업데이트 방식유연한 업데이트는 상태 모니터링 기능과 백그라운드 다운로드 및 설치를 제공합니다.이를 통해서 사용자가 업데이트를 다운로드하는 동안 앱을 사용할 수 있게끔 하는데에 적합합니다.그래서 사용자가 앱의 중요하지 않은 새 기능을 사용해보도록 유도할 수 있습니다. 즉시 업데이트는 사용자가 앱을 계속 사용하려면 앱을 업데이트하고 다시 시작해야하는..

Android/sdk 2025.09.23

[Android] 뒤로가기 탐색 기능 : onBackPressed에서 onBackPressedDispatcher로 변경

뒤로가기 탐색 기능은?사용자가 이전에 방문한 화면 기록을 통해 뒤로 이동하는 기능으로iOS와는 달리, 모든 Android 기기는 이 유형의 탐색을 위해 뒤로 버튼을 제공하므로 앱 UI에 뒤로 버튼을 추가하지 말아야 합니다. 맞춤형 뒤로가기 탐색 기능 제공앱에서 Activity 1.5.0 이상을 사용하면, ComponentDialog 및 onBackPressedDispatcher 를 통해 뒤로가기 탐색 구현이 가능합니다.FragmentActivity 와 AppCompatActivity 의 기본 클래스인 ComponentActivity 를 사용하면,onBackPressedDispatcher 를 사용하여 뒤로가기 버튼의 동작을 제어할 수 있습니다. onBackPressedDispatcher 는 뒤로가기 버튼..

Android/interface 2025.09.23

[Android] 코루틴 고급 활용 : Suspend, Dispatchers, withContext

Kotlin 코루틴의 장기 실행 작업 관리Kotlin 코루틴을 사용하면 네트워크 호출이나 디스크 작업 같은 장기 실행 작업을 관리하면서도 간소화된 비동기 코드 작성이 가능합니다. 1. suspend 함수란?suspend fun 은 일시 중단 가능한 함수입니다.함수 실행 중에 잠깐 멈췄다가 다시 이어서 실행할 수 있게 만듭니다.예를 들어, 네트워크 요청, 디스크 IO 등 오래 걸리는 작업을 UI 멈추지 않고 수행할 수 있습니다. suspend fun fetchDocs() { // Dispatchers.Main val result = get("https://developer.android.com") // Dispatchers.IO for `get` ..

Android/platform 2025.06.26

[Android] deprecated된 screenOrientation, 적응형 레이아웃으로 가는 길

Android 16 이상 기기에서 SDK 36 이상을 타겟팅하면?Android 16 이상을 실행하는 기기에서 SDK 36 이상을 타겟팅하면 대형 화면 기기에서 표시될 때 앱에 적용되는 변경사항이 있습니다.시스템이 방향, 크기 조정 가능성, 가로세로 비율 제한을 관리하는 방식이 최소 너비가 600dp 를 초과하는 디스플레이에서는 더 이상 적용되지 않습니다.앱은 가로세로 비율이나 사용자의 선호하는 방향과 관계 없이, 전체 디스플레이 창을 채우며 레터박스 처리는 사용되지 않습니다. 적응형 레이아웃Android 앱이 다양한 기기에서 실행되고 대형 화면의 창 모드가 지원되므로개발자는 기기 방향과 관계없이 모든 화면 및 창 크기에 맞게 조정되게끔 작업해야 합니다. 대형 화면 기기의 전체 화면 모드, 멀티 윈도우..

Android/deprecated 2025.06.19

[Android] deprecated된 onBackPressed, 뒤로 가기 변화

Android 16 이상 기기에서 SDK 36 이상을 타겟팅하면?Android 16 이상을 실행하는 기기에서 SDK 36 이상을 타겟팅하면 뒤로 탐색 예측 시스템 애니메이션이 기본적으로 설정됩니다.onBackPressed 가 호출되지 않으며, KeyEvent.KEYCODE_BACK 이 더 이상 전달되지 않습니다. 앱이 뒤로 가기 이벤트를 사용하지만 뒤로 탐색 예측으로 이전하지 않은 경우에는 뒤로 탐색 API 사용하거나앱의 AndroidManifest.xml 파일의 또는 태그에서android:enableOnBackInvokedCallback 속성을 false로 설정하여 일시적으로 선택 해제해야 합니다. 뒤로 가기 예측 동작에 대한 지원 추가뒤로 가기 예측 동작을 지원하려면 하위 호환되는 AppComp..

Android/deprecated 2025.06.19

[Android] 제네릭(Generic)을 사용하는 함수 예시

제네릭(Generic) 이란?제네릭이란, 클래스나 함수에서 타입을 고정하지 않고, 나중에 타입을 외부에서 주입받아 사용하는 문법입니다.예를 들어, 리스트를 만들 때 List 또는 List 처럼 타입을 지정하죠?이것도 내부적으로는 제네릭을 사용한 대표적인 예입니다. 제네릭이 왜 필요할까?제네릭을 사용하지 않으면, 여러 타입을 처리하면서 코드를 타입마다 반복해서 작성해야 합니다.예를 들어, BoxOfInt, BoxOfString 등 타입마다 클래스 따로 만들겠죠.하지만 제네릭을 사용하면 하나의 클래스와 함수로 모든 타입을 처리할 수 있습니다. class Box(val content: T) { fun getContent(): T { return content }} 여기서 T 는 타입..

Android/interface 2025.04.22
반응형