본문 바로가기

Android169

[Android] 핸들러(Handler)와 루퍼(Looper) 안드로이드에서 Thread안드로이드에서의 메인 스레드(Main Thread, UI Thread)란?앱이 실행됐을 때 시스템에서는 메인(Main)이라고 불리는 스레드를 생성한다.메인스레드는 안드로이드 이벤트 생성 및 처리를 담당할 뿐 아니라 안드로이드에서 발생되는 여러 이벤트를 그와 관련된 위젯으로 연동시키는 중요한 역할을 수행한다.또한 안드로이드에서 제공하는 다양한 뷰와 위젯을 표현하는 역할과 사용자로 하여금 그것을 사용할 수 있게 해 주어 UI 스레드라고도 불린다.앱에 메인 스레드만 존재한다면?앱이 단일 스레드 즉 메인 스레드만 존재하는 모델에서는 형편없는 성능을 낳게 된다.메인 스레드에서 모든 작업을 처리한다면 네트워크 처리 및 데이터베이스 쿼리와 같이 오래 걸리는 작업을 하는 동안 UI와 관련된 작.. 2025. 2. 27.
[Android] Context 딥 다이브 (2) - 내부 메소드 종류 지난 포스팅(https://jtm0609.tistory.com/300)에서는 Context 개념에 대해서 살펴보았습니다.이번 포스팅에서는 추상클래스인 Context가 가지고 있는 api와 메소드들을 살펴보겠습니다. Context.java 소스 코드 {docs}Context.java 는 frameworks/base/core/java/android/content 패키지에 존재합니다. Context.java에는 아래와 같은 정보를 가지고 있습니다.플래그 정보리소스, Theme 정보PackageManager, MainLooper 정보Activity, Service, Broadcast, ContentResoler 정보ApplicationContext 정보 및 각종 Context에 대한 생성 로직Applicatio.. 2025. 2. 26.
[Android] Context 딥 다이브 (1) - Context란? 안드로이드 앱 개발을 해본 사람들이라면, 다양한 동작에 사용되는 Context 라는 키워드 자체를 많이 봐왔을 것입니다. 하지만, 정확히 이것이 어떤 역할을 하는 지 모르는 경우가 많습니다.따라서 이번 포스팅에선, Android 에서 Context 의 개념에 대해 확실히 알아보려고 합니다.Context란?Class OverviewInterface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, a.. 2025. 2. 26.
[Android] 안드로이드 Binder(IPC) 구현하기 이전 포스팅(https://jtm0609.tistory.com/297)에서 안드로이드에서 프로세스 간 통신을 위해 IPC를 사용하고, 바인더(Binder)를 통해 이 메커니즘을 적용한다고 설명했습니다.실제로 우리가 자주 사용하는 Intent, Messenger, ContentProvider 등은 실제로 Android의 추상화된 상위 수준의 IPC로 Binder를 기반으로 구축되어 있습니다. 그렇다면 이러한 IPC 방식은 어떤 상황에서 유용하게 구현해서 사용할 수있을까요?일반적으로는 Intent를 통한 통신으로도 충분하지만,서비스와 액티비티 간 통신과 같이 Binder(IPC)를 구현하여 통신을 주고 받는 상황이 필요할 수 있습니다.안드로이드에서 제공하는 대표적인 세 가지 방법은 BroadCastRecei.. 2025. 2. 25.
[Android] 안드로이드의 바인더(IPC)란? 바인더Android System 디자인의 가장 큰 특징 중 하나는 모든 앱은 서로 다른 앱의 컴포넌트를 실행시킬 수 있다는 것이며 그래서 각 컴포넌트들은 모두 각 앱의 진입점(EntryPoint)이 될 수 있다는 것입니다. 따라서 안드로이드에서는 컴포넌트 간 통신시 Intent를 자주 사용하게 됩니다. 안드로이드 플랫폼은 리눅스 커널 영역을 기반으로 하며, 카메라를 사용하거나 소리를 출력 및 조절하는 등의 기능을 이용하려면, 시스템 콜을 통해 커널에 요청을 해야 합니다안드로이드에서는 모든 시스템 서비스가 서버 프로세스 형태로 제공되기 때문에, 다른 프로세스와의 요청 및 응답을 위해 메시지 패싱 기법을 활용한 IPC 방식이 필요합니다. 안드로이드에서 이런 IPC 메커니즘을 담당하는 것이 바로 Binder입.. 2025. 2. 25.
[Android] Hilt로 런타임 의존성 주입하기 (@AssistedInject) 1. Assisted Injection안드로이드 프로젝트에서 Dagger-Hilt 종속성 주입을 사용하는 경우 일반적으로 클래스에 종속성 객체를 주입할 때 지정된 매개변수를 자동으로 전달하여 이를 구성한다. 그러나 런타임 중에 일부 매개변수를 수동으로 제공하여 객체를 구성해야 하는 경우가 발생할 수 있다. Dagger-Hilt에서는 Assisted Injection 기능을 통해 이 방법을 제시하고 있다. 2. 예제를 통한 Assisted Injection 사용 방법 이해한 사용자의 플레이리스트를 화면을 위한 UserPlayListFragment에 삽입될 UserPlayListViewModel이 있다고 예를 들어 설명해보자. 이 Fragment가 화면에 표시될 때 유저의 플레이리스트 목록을 가져와 UI에 .. 2025. 2. 24.