Android
-
[Android] Compose - Lifecycle 정리Android 2024. 3. 15. 17:09
본 포스팅은 Android developer 가이드를 기반으로 작성되었습니다. Lifecycle composition의 수명주기는 시작, 재구성(Recomposition, 0회 이상), 종료로 구성. composition이란, composable을 실행하여 생성된 UI 구성 요소 Recomposition UI 상태가 변경될 때 composable을 다시 실행하고 변경 사항을 반영하는 것을 recomposition이라고 한다. 대체로 State 객체가 변경되면 트리거되며 해당 State를 읽는 모든 컴포저블을 실행한다. 이전 호출에 호출했으나 입력이 변경되지 않은 composable은 recomposition을 건너 뛸 수 있다. call site composable이 호출되는 소스 코드의 위치 compo..
-
[Android] AAC-LiveData의 setValue와 postValueAndroid 2021. 4. 23. 10:22
워크 스레드로 카운팅을 하는 앱에서 LiveData를 setValue()로 제대로 갱신되지 않는 상황이 발생했고, postValue()로 변경하면서 해결했다. 그래서 까먹지 않기 위해 setValue와 postValue에 대한 정리를 하려고 한다 :) setValue() 레퍼런스 문서를 보면 setValue는 아래와 같이 정리되어 있다. Sets the value. If there are active observers, the value will be dispatched to them. This method must be called from the main thread. If you need set a value from a background thread, you can use postValue(Ob..
-
[Android] FCM을 이용해 Push 구현하기Android 2021. 4. 15. 18:38
Push Service? FCM? 서버에서 모바일 장치에 보내는 알림 또는 메시지. 직접 구현한 서버에서 사용자 장치로 알림을 보내기 위해서는 앱과 서버의 연결을 지속적으로 유지해야한다. 그러나 FCM(Firebase Cloud Messaging)은 구글 클라우드 서버를 사용해 앱에서 서버에 연결하지 않아도 기기의 내부 연결을 통해 메시지를 보낼 수 있다. FCM을 사용해서 메시지를 보내는 과정 FCM을 이용해 메시지를 보내는 과정을 간단하게 다섯 단계로 나눠서 정리해보았다. 1. 토큰 요청 및 획득 먼저 사용자가 앱을 설치하고 최초 실행시 토큰을 얻기위해 클라우드 서버에 요청을 보내고 토큰을 획득한다. 2. 서버에 토큰 저장 획득한 토큰을 서버로 전송하여 서버 db에 저장한다. 이 토큰은 서버가 클라우..
-
[Android] Notification 구현 예제 및 ChannelAndroid 2021. 4. 15. 16:32
기본 상단 알림 구현하기 안드로이드에서는 화면 상단에 정보를 표시해서 사용자에게 메시지나 상태를 보여주는 알림을 구현할 수 있다. 상단 알림은 NotificationManager 시스템 서비스와 NotificationCompat.Builder를 이용해 간단하게 생성하고 등록할 수 있다. 안드로이드 오레오(API 26) 이상부터는 채널이 필요하다. * 채널에 대한 내용은 본문 하단에 정리했으니 거기서 자세히 살펴보자. Build.VERSION.SDK_INT를 이용해 버전을 확인하고 오레오 이전 이후로 나눠서 Builder를 만든다. NotificationCompat.Builder builder = null; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { b..
-
[Android] 스레드(Thread)와 핸들러(Handler), 작업 스레드에서 UI 업데이트 요청하기Android 2021. 4. 14. 16:32
스레드(Thread) 스레드는 프로세스 내부에서 자원을 공유하며 실행되는 흐름의 단위다. 안드로이드에서는 메인 스레드는 UI 스레드로써 UI 작업을 담당하기 때문에 메인 스레드로 장기적인 작업을 수행할 경우 ANR이 발생한다. * ANR (Application Not Responding) : 말그대로 어플리케이션 응답 없음. 메인 스레드가 어떤 Task에 오랜 시간 잡혀 있을 때 발생한다. 어플리케이션이 응답없다는 팝업 메세지와 함께 어플리케이션이 종료된다. 멀티 스레드 (Multi Thread) 프로세스는 둘 이상의 스레드를 가질 수 있는데, 여러 개의 스레드는 프로세스 내 자원을 공유하면서 동시에 작업하며 효율적으로 동작한다. 안드로이드에서는 UI를 차단하지 않기 위해 네트워크 통신같은 작업은 주로 ..
-
[Android] JSON 라이브러리 : GSONAndroid 2021. 4. 12. 19:48
Json이란? Json(JavaScript Object Notiation)은 키-값(key-value)로 이루어진 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 자바스크립트 뿐만 아니라 여러 프로그래밍에서 사용된다. 읽고 쓰는 것이 간단하고, 언어 독립적이며, XML보다 가볍다는 장점이 있어서 네트워크 통신에서 자주 사용된다. 기본 구조 json은 하나의 문자열로 구성되며 "{key : value}"의 객체 형태를 기본으로 하고 콤마(,)로 구분된다. value에는 문자열, 숫자, 배열, boolean값과 다른 객체를 포함할 수 있다. (자바스크립트 객체 표현 방식과 거의 동일하다.) { "이름": "홍길동", "나이": 25, "성별": "여", "주소": "서울특별시 양천구 목동", "..
-
[Android] 권한(Permission)과 위험 권한 요청 방법Android 2021. 4. 8. 17:30
권한(Permission)이란? 안드로이드에서는 제한된 데이터 혹은 작업에 대해 개인정보 보호를 위해 사용자로부터 권한을 부여받도록 되어있다. 매니페스트에서 권한을 선언할 수 있는데, 앱을 설치할 때 사용자가 허용하면 한번에 권한이 부여된다. 앱 권한 선언 일반 권한의 경우 매니페스트에서 선언하여 설치 시점에서 권한을 부여받을 수 있다. 앱 권한을 부여하기 위해서는 매니페스트 파일에 요소를 추가해야한다. 아래는 카메라에 접근하기 위한 권한을 추가하는 방법이다. ... +) 하드웨어와 관련된 권한의 경우, 해당 하드웨어 기기를 선택사항으로 선언할 수 있다. ... android:required 옵션을 false로 설정하지 않으면 하드웨어 기기가 없다면 앱 자체를 설치할 수 없다. 위험 권한 (런타임 권한)..
-
[Android] 브로드캐스트 리시버(Broadcast Receiver)와 전송Android 2021. 4. 8. 16:19
브로드캐스트 안드로이드는 기기 충전 시작, SMS수신과 같은 이벤트가 발생하면 브로드캐스트 메시지를 전송하여 앱에 알릴 수 있다. 앱은 특정 브로드캐스트를 수신하도록 등록할 수 있고, 브로드 캐스트가 전송되면 그 유형의 알림을 수신하도록 등록한 앱에 자동으로 라우팅하게 된다. 한마디로 이벤트 발생을 알리는 메시징 시스템 !! 브로드캐스트 리시버 앱에서 브로드캐스트 알림을 수신하기 위해서는 브로드캐스트 리시버(Broadcast Receiver)를 구현해야 한다. 브로드캐스트 리시버 구현 BroadcastReceiver의 서브 클래스를 선언하고, onReceive(Context, Intent)를 구현한다. onReceive 메서드는 지정한 브로드캐스트 메시지가 도착하면 자동으로 호출된다. public cla..