분류 전체보기

    BroadcastReceiver :: 앱 구성 요소 4대 컴포넌트 [ Deep in the AOS ]

    Android Developer에선 Broadcast를 다음과 같이 설명합니다. Android 앱은 Android 시스템 및 기타 Android 앱에서 게시 - 구독 디자인 패턴과 유사한 Broadcast Message를 받거나 보낼 수 있습니다. 관심 있는 이벤트가 발생할 때 Broadcast가 전송됩니다. 예를 들어, 시스템 부팅 또는 기기 충전 시작과 같은 다양한 시스템 이벤트가 발생할 때 Broadcast를 전송합니다. 앱은 특정 Broadcast를 수신하도록 등록할 수 있습니다. Broadcast가 전송되면 시스템은 특정 유형의 Broadcast를 수신하도록 신청한 앱에 Broadcast를 자동으로 라우팅합니다. 이런 Broadcast는 앱 전체, 일반 사용자 플로우 외부에서 메시징 시스템으로 ..

    Service :: 앱 구성 요소 4대 컴포넌트 [ Deep in the AOS ]

    Android Develop에서는 Service를 이렇게 설명합니다. 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션의 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 다른 애플리케이션 구성 요소가 서비스를 시작할 수 있으며, 사용자가 다른 애플리케이션으로 전환하더라도 백그라운드에서 계속 실행됩니다. 구성 요소를 서비스에 바인딩해 서비스와 상호작용할 수 있으며, 심지어는 프로세스 간 통신(IPC)도 수행할 수 있습니다. 한 서비스는 네트워크 트랜잭션 처리, 음악을 재생 그리고 파일 I/O를 수행하거나 콘텐츠 제공자와 상호작용할 수 있으며 이 모든 것을 백그라운드에서 수행할 수 있습니다. 이런 서비스에는 세 가지 유형이 있습니다. 1. 포그라운드 포그라운드 서비스는 사용자에게 잘 보이..

    Session에 대한 정리 및 고찰

    HTTP의 특성은 다음과 같습니다. 1. 무상태(Stateless) 프로토콜입니다. 2. 클라이언트와 서버가 요청과 응답을 주고 받으면 연결이 끊어집니다. 3. 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못합니다. 4. 클라이언트와 서버는 서로 상태를 유지하지 않습니다. Session의 특성은 다음과 같습니다. 1. 클라이언트가 처음 서버에 연결되면 어떤 하나의 Session ID가 생성됩니다. 2. 이 아이디는 고유한 ID 입니다. 3. 이 아이디를 통해 서버는 이녀석이구나 하고 요청에 대한 응답을 할 수 있습니다. 4. 세션은 서버에 저장됩니다 ! ( 쿠키는 반면에 Client에 저장이 됩니다. ) 즉, Client는 하나의 민증을 갖게 됩니다. 우리가 민증으로 편의점, 술집, 은행 등에..

    Activity :: 앱 구성 요소 4대 컴포넌트 [ Deep in the AOS ]

    Activity Service Broadcast Receiver Content Provider 각 유형은 뚜렷한 목적을 수행하고 각자 나름의 수명 주기가 있어서 구성 요소의 생성 및 소멸 방식을 정의합니다. 액티비티는 사용자와 상호작용하기 위한 진입점 사용자 인터페이스를 포함한 화면 하나를 나타냅니다. Android Develop에선 이메일 앱을 예시로 설명했습니다. 1. 이메일 목록을 표시하는 액티비티 2. 이메일을 작성하는 액티비티 3. 이메일을 읽기 위한 액티비티 우리는 이메일 앱을 사용하게 되면 [1. 이메일 목록을 표시하는 액티비티]가 화면에 표시될 것입니다. 이 목록 중에 읽고 싶은 메일을 누르면 [3. 이메일을 읽기 위한 액티비티]가 화면에 표시됩니다. 이메일을 작성하는 버튼을 누른다면 [2..

    Kotlin MVVM Coroutine을 활용해 Api call 하기

    우선, API를 콜했을 때 Resource를 알기 위해 클래스를 생성합니다. data class Resource(val status: Status, val data: T?, val message: ErrorMessage?) { companion object { fun success(data: T?): Resource { return Resource(Status.SUCCESS, data, null) } fun error(msg: ErrorMessage, data: T?): Resource { return Resource(Status.ERROR, data, msg) } fun loading(data: T?): Resource { return Resource(Status.LOADING, data, null) ..