본문 바로가기

프로그래밍/Android

(27)
[Widget] Android Widget 에서 ForegroundService 실행 Android 12 부터 백그라운드에서 ForegroundService 를 실행할 수 없게 되었다. - 포그라운드 서비스 실행 제한 https://developer.android.com/about/versions/12/foreground-services?hl=ko 위젯 데이터를 즉시 업데이트 할때 ForegroundService 를 사용하고 있었는데, ForegroundServiceStartNotAllowedException 이 발생되며 위젯 생성이 중지되었다. 기존에 자정에 위젯을 업데이트 하기 위한 용도로 AlarmManager 를 사용하고 있었는데, AlarmManager 로 서비스를 즉시 업데이트 하니 3~5초 정도 딜레이가 있어 WorkManager 를 적용해보기로 했다. 하지만 onUpdate..
Service 정리 Android Service 엔 3가지가 있다. BackgroundService BindService ForegroundService - BackgroundService : 앱을 꺼도 백그라운드에서 실행할 수 있는 작업 - BindService : Activity 와 같은 컴포넌트와 상호작용할 수 있는 작업 - ForegroundService : 다른 앱 뒤에서 동작 할 수 있는 작업, 알림을 표시해야 한다. Android 12 이상일 경우 알림을 10초간 보여주지 않고 기다린다. - API 26 (Android 8.0) 이상일때, 앱이 포그라운드에 있을때 백그라운드 서비스 생성, 호출이 제한된다. 서비스 실행시 startForegroundService() 함수를 써야한다. BroadcastReceive..
[Compose] Compose Camp Pathway 1-1 Composable function 의 파라미터 Composable function 의 파라미터는 빈 Modifier 가 할당되도록 하는 것이 좋다. 함수에서 호출하는 첫번째 Composable 에 이 Modifier 를 전달하면, 이렇게 하면 구성가능한 함수 외부에서 레이아웃 과 동작을 조작할 수 있고, 필요시 MyApp 함수를 재사용하여 코드 중복을 피할 수 있다. // 사용 예시 MyApp(modifier = Modifier.fillMaxSize()) // 함수 @Composable private fun MyApp(modifier: Modifier = Modifier) { Surface( modifier = modifier, color = MaterialTheme.colors.background )..
[Compose] Thinking in Compose https://developer.android.com/jetpack/compose/mental-model Compose 이해 | Jetpack Compose | Android Developers Compose 이해 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Jetpack Compose는 Android를 위한 현대적인 선언형 UI 도구 키트입니다. Compose는 프런트엔드 뷰를 명령 developer.android.com Jetpack Compose 는 Android 를 위한 선언형 Ui 툴킷이다. Compose 의 특징에 대해 알아보자. 선언형 프로그래밍 패러다임 선언형 UI 모델로 전환되며 UI 빌드 및 업데이트 와 관련된 엔지니어링이 크게 간소화 되었다. 이 기법..
[Compose] Jetpack Compose Tutorial Tutorial (https://developer.android.com/jetpack/compose/tutorial) Lesson 1 : Composable functions Compose 는 Composable function 으로 구성되어있다. 이 함수들은 Ui 구성에 집중하기 보다 앱이 어떻게 보이는지 설명하고, 데이터 의존성을 제공함으로써 UI 를 정의하도록 한다. 일반 함수를 Compose 함수를 만들려면 @Composable annotation 을 추가하면 된다. Composable function 은 다른 Composable function 에서만 호출될 수 있다. - setConent block : setConent 블록은 Composable function 이 호출될 수 있는 액티비티 레..
[Compose] Jetpack Compose 시작하기 Jetpack Compose - Composable : 구성가능한 함수를 호출하여 데이터를 UI 요소로 반환하는 것 - Recomposition : Composable 을 재실행한 후 변경사항을 업데이트 하는 것 - State / MutableState : 변수를 관찰가능한 상태로 설정하는 것 - Remember : Composable 이 재구성되어도 값을 저장 할 수 있도록 도와주는 API - SetContent : setContentView 대신에 SetContent 안에 Composable 함수를 넣어 XML 대신 레이아웃을 만든다. @Composable annotation 을 통해 Composable 함수를 만들고, 그 함수 내부에서는 TextView 를 대체하는 Composable functio..
Android12 정확한 알람 - SCHEDULE_EXACT_ALARM vs USE_EXACT_ALARM Android 12 부터 앱에서 정확한 알람(EXACT ALARM)을 사용하는 경우에 필요한 Permission 이 추가되었다. (정확한 알람이란 AlarmManger 를 사용하여 특정한 시각(ex. 00시00분)에 알람을 예약하고, 그 이후의 동작을 예약하는 것을 말한다.) 정확한 알람을 사용하여 개발중인 경우 아래 권한이 필수적인데, 헷갈리는 부분이 있어 정리해보았다. SCHEDULE_EXACT_ALARM 이 권한은 앱이 정확한 알람을 사용할 수 있게 한다. 사용자나 시스템이 철회할 수 있늩 특수한 접근권한이고, 정확한 알람을 사용하는 경우에만 추가하면 된다. TargetSdk 가 Android 12 (API 31 : Build.VERSION_CODES.S) 이상이고, 정확한 알람을 사용하는 경우에 ..
Android Architecture Overview https://source.android.com/devices/architecture?hl=ko - Application - Application Framework : 개발자들이 가장 많이 쓰이는 기능 - Binder IPC Proxies : IPC (Inter-Process Communication - 프로세스 간 통신) 매커니즘은 Application Fragment 가 프로세스 경계를 넘을 수 있게 한다. 그리고 Android System service 를 호출 할 수 있게 한다. 이를 통해 상위 수준의 Framework API 가 System Service 와 상호작용한다. Application Framework 수준에서는 이 통신이 가려지고, 개발자들에게는 그저 잘 돌아가는 것으로 보인다. - ..