본문 바로가기

프로그래밍

(90)
[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..
[RxJava] Subject 클래스 - 구독과 해지 : Observable 을 subscribe() 하여 구독하고 dispose() 하여 구독을 해지한다. Observable 이 complete() 를 보냈을때 dispose() 를 호출해 자동으로 구독 관계를 끊는다. - 차가운 Observable : 차가운 Observable 은 subscribe() 함수를 호출하여 구독하지 않는 이상 데이터를 발행하지 않는다. subscribe() 호출 즉시 준비된 데이터를 처음부터 발행한다. - 뜨거운 Observable : 구독자 존재 여부와 관계없이 데이터를 발행한다. 또 여러 구독자가 있을 수 있다. 단, 구독자가 Observable 에서 발행하는 데이터를 처음부터 수신하는 것을 보장하지 않고, subscribe() 시점부터 그 이후에 발행한 ..
[클린코드] 2장~5장 2장 의미 있는 이름 1. 명확한 이름은 코드를 읽으면서 함수의 내용을 파악할 수 있게 돕는다. 2. 의미가 불분명한 불용어의 사용하지 않는다. - Info, Data, a, an, the 와 같은 불용어. 물론 의미가 분명이 다르다면 사용해도 무방하다. - nameString vs name : name 이 float 가 될 가능성이 있는가? - 과거에는 변수에 타입을 넣는 것이 중요하지만, 더이상 변수 이름에 타입을 넣을 필요가 없다. 3. 인터페이스와 구현 클래스 - ShapeFactory, ShapeFactoryImpl - 내가 사용하는 클래스가 인터페이스라는 사실을 남에게 알리지 않는 것이 좋다. 4. 한 개념에 한 단어를 사용해라. - 비슷한 의미의 메서드를 클래스마다 다르게 사용할 경우 나중에..