티스토리 뷰
Locaiton Service나 onClick에 대한 Listener (예: LocationCallback with FusedLocationProviderClient 또는 LocationListener with LocaitonManager)는 전통적인 의미에서 별도의 스레드, 서비스 또는 인터럽트로 작동하지 않는다. 위치 업데이트를 처리하기 위해 별도의 스레드가 필요한 경우 (예: 무거운 연산을 윟) Thread, HandlerThread 또는 ExecutorService 를 사용해 명시적으로 생성하고 관리해야 한다. 작동 방식을 아래와 같다.
- Listener Mechanism
- Callback-Based
: LocationCallback 또는 LocationListener와 같은 Listener는 콜백 메커니즘이다. 시스템은 지정된 이벤트가 발생할 때 (예: 새 위치 업데이트를 사용할 수 있는 경우) 이러한 콜백을 호출한다. - Not a Seperate Thread
: 이러한 Listener는 자체적으로 별도의 스레드를 만들지 않는다. 콜백은 별도로 지정하지 않는 한 콜백을 등록하는 동일한 스레드 (일반적으로 기본 UI 스레드)에서 실행된다. - Thread-Safe Invocation
: 필요한 경우 무거운 처리를 백그라운드 스레드로 오프로드 할 수 있지만 기본적으로 location callbacks은 등록한 스레드에서 실행된다.
- Callback-Based
- Location Service Behavior
- Not a Service
: location system service (안드로이드 시스템 서비스의 일부)는 위치 업데이트를 제공하지만 Listener 또는 Callback을 등록한다고 해서 별도의 안드로이드 Service 가 생성되는 것은 아니다. 기존 시스템 서비스에서 업데이트를 수신하는 방법일 뿐이다. - System-Level Service
: 기본 위치 서비스는 안드로이드 시스템의 일부로 실행된다. FusedLocationProvdierClient를 사용하면 위치 소스 (GPS, Wi-Fi, Cellular) 를 관리하는 이 시스템 수준 서비스와 상호 작용하게 된다.
- Not a Service
- Interrupt-Like Behavior
- Event-Driven, Not Interrupts
: Listener는 이벤트 (예: 위치 수신) 에 응답하지만 하드웨어 또는 소프트웨어 인터럽트가 아니다. 대신 안드로이드 이벤트 루프와 콜백 메커니즘에 의존해 위치 변경이 발생하면 앱에 알린다. - Asynchronous Notifications
: 위치 수신기는 비동기적으로 알림을 받으므로 메인 스레드를 차단하지 않으며 수신 중인 이벤트가 발생할 때만 호출한다.
- Event-Driven, Not Interrupts
- Example of How Location Listeners Work
: LocationCallback 또는 LocationListener 를 등록하면 안드로이드 프레임워크는 사용자가 제공한 기준 (예: 업데이트 간격, 우선 순위)에 따라 위치 변경을 모니터링 한다. 새 위치가 감지되면- 시스템이 Listener를 트리거한다.
- Listener의 콜백 메서드 (예: onLocationResult() 또는 onLocationChanged()) 가 호출된다.
- Summary
- Not a Thread
: Location Listeners는 별도의 스레드로 실행되지 않고 등록 스레드에서 호출되는 콜백을 사용한다. - Not a Service
: 시스템의 위치 서비스에 의존하지만 그 자체는 서비스가 아니다. - Not an Interrupt
: 이벤트 기반이며 시스템에서 감지된 변경 사항에 비동기적으로 응답한다.
- Not a Thread
반응형
'기술(Tech, IT) > 안드로이드(Android)' 카테고리의 다른 글
[Android] ViewCompat.setOnApplyWindowInsetsListener (2) | 2024.11.05 |
---|---|
[Android] Location (0) | 2024.11.04 |
[Android] RecyclerView (리싸이클러 뷰) - 2 (0) | 2024.09.28 |
[Android] RecyclerView (리싸이클러 뷰) - 1 (0) | 2024.09.27 |
[Android] Snackbar Vs. Toast (1) | 2024.09.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리트코드
- ml
- The Economist Espresso
- Computer Graphics
- Vector
- 컴퓨터 그래픽스
- Android
- Hash Map
- 이코노미스트 에스프레소
- socket programming
- 소켓 프로그래밍
- vertex shader
- 투 포인터
- join
- machine learning
- DICTIONARY
- 안드로이드
- java
- min heap
- 이코노미스트
- 벡터
- tf-idf
- 머신 러닝
- defaultdict
- The Economist
- Python
- leetcode
- C++
- 딕셔너리
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
반응형