프로그래밍 (90) 썸네일형 리스트형 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 수준에서는 이 통신이 가려지고, 개발자들에게는 그저 잘 돌아가는 것으로 보인다. - .. 위젯 1:1 크기 계산 - 위젯 사이즈는 1:1 비율로 만들기 위해, 위젯 크기를 구해서 상하단의 padding 값을 빼줬다. padding = (height - width) / 2 - 홈 화면 세로모드, 가로모드에 대응하기 위해 세로모드일 때의 padding 과 가로모드일 때의 padding 을 각각 구했고, 가로모드 일때도 1:1 비율로 유지되도록 구현했다. (paddingVertical, paddingHorizontal) remoteViews.setViewPadding(R.id.layout_widget, paddingHorizontal, paddingVertical, paddingHorizontal, paddingVertical) - 근데 자고일어나면 위젯이 찌그러져있는 버그를 발견함 - padding 값을 제대로 계산하.. [RxJava-4] 연산자 (Operator) RxJava 는 just(), fromArray() 와 같은 팩토리 함수를 사용해 Observable 을 생성하고, 연산자(Operator)를 사용하여 데이터를 처리합니다. 팩토리 함수와 연산자를 함께 사용하는 방법을 메서드 체이닝(Method Chaining)이라 하고, 여러 연산자를 잘 사용하면 복잡한 비동기 호출도 간결하게 처리할 수 있습니다. 연산자를 잘 사용하기 위해서는 어떤 연산자가 있는지 알아야 합니다. 하지만, 모든 연산자를 다 외울 필요는 없습니다. 대략 이런 기능이 있다는 것만 알고 필요할 때, 책이나 docs 에서 찾아서 적용하면 됩니다. 연산자에는 크게 생성 연산자, 변환 연산자, 결합 연산자, 조건 연산자, 수학 연산자가 있습니다. 각각 이름 그대로 Observable 을 생성/변.. [RxJava-3] 데이터 발행자(Data Source) : Observable 과 Single, Maybe, Completable Observable 과 비슷한 데이터 소스에는 Single, Maybe, Completable 이 있습니다. Flowable 이라는 것도 있지만 그건 나중에 알아보도록 할겠습니다. Observable 이라는 데이터 소스를 구독했을 경우 구독을 해지하기 전까지는 Observable 발행하는 모든 데이터를 받을 수 있습니다. 하지만 안드로이드에서 주로 사용하는 API 통신의 경우 단발성 소통이 대부분이고, 이런 것에서 Observable 을 사용한다면 자원이 낭비됩니다. 이때 효율적으로 한번 데이터를 받으면 자동으로 구독해지, 종료시키는 데이터 소스가 Single, Maybe, Completable 입니다. Observable 은 데이터가 발행되면 3가지 형태로 데이터를 받습니다. public interfa.. [RxJava-2] Observable 에 대하여 RxJava 를 처음 시작하는데 장벽이 높은 이유 중에 하나는 이해해야 할 단어들이 많기 때문이라고 생각합니다. 비동기 프로그래밍을 공부하고 싶어서 RxJava 를 검색하면 어떤 책이든 블로그든 Observable, Operator 등 새로운 개념들이 쏟아집니다. 하나식 알아가 볼까요? [RxJava-1] 에서 ReactiveX 를 관찰 가능한(observable) 비동기적인 데이터 흐름(stream)을 함수 형태로 프로그래밍하는 API 이라고 했습니다. Observable(옵저버블) 은 단어 뜻 그대로 관찰 가능한 것입니다. RxJava는 Observable(옵저버블)을 사용해 데이터 흐름을 만들고, Observer(관찰자)가 이 Observable 을 관찰하고 있다가, 데이터가 전달되면 그 데이터를 .. [RxJava-1] Reactive Programming 과 ReactiveX 그리고 RxJava Reactive Programming, ReactiveX, RxJava 이 무엇인지 알아보고, 무엇이 다른지 이해해보겠습니다. Reactive Programming (리액티브 프로그래밍) 은 데이터의 흐름(stream)과 전달에 관한 프로그래밍 패러다임입니다. 패러다임이란, 사람들의 견해나 사고를 규정하는 인식 체계를 말합니다. 저는 패러다임을 어떤 것을 알아가고 인식하는 관점이라고 이해했습니다. 그렇다면, 프로그래밍 패러다임은 프로그래밍을 인식하는 방식이나 방향이라고 할 수 있겠네요. 예를 들어, 객체지향 프로그래밍은 코드를 객체들의 집합으로 구분해서 코드를 인식하는 방식이고, 함수형 프로그래밍은 코드를 순수 함수로 구분하여 프로그래밍하는 방식입니다. 정리하면, 리액티브 프로그래밍은 데이터를 전달하여 .. Android Kotlin Fundamentals's Context Lesson 1: Build your first app 1.0 Install Android Studio 1.1 Get started 1.2 Basic app anatomy 1.3 Image resources and compatibility 1.4 Learn to help yourself Lesson 2: Layouts 2.1 Linear layout using the Layout Editor 2.2 Add user interactivity 2.3 Constraint layout using the Layout Editor 2.4 Data-binding basics Lesson 3: Navigation 3.1 Create a fragment 3.2 Define navigation paths 3.3 Start.. 이전 1 2 3 4 5 ··· 12 다음