일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RxKotlin
- liveData
- list
- android13
- node
- mvvm
- MotionLayout
- mysql
- MediaSession
- 동영상
- GCP
- Animation
- databinding
- 테스트 자동화
- Kotlin
- Observable
- junit
- SwiftUI Tutorial
- node.js
- rx
- Android 13
- Android
- Koin
- PagingLib
- MediaPlayer
- Reactive
- google play
- paging
- SWIFTUI
- 인앱결제
- Today
- Total
봄날은 갔다. 이제 그 정신으로 공부하자
Android 13 - 3편 (FGS Task Manager) 본문
Android 13(API 수준 33)에서는 타겟 SDK 버전과 관계없이 사용자가 "알림창"에서 Foreground Service를 중지할 수 있습니다. FGS(Foreground Services) Task Manager라고 하는 이 새로운 기능에는 현재 포그라운드 서비스를 실행 중인 앱 목록이 표시됩니다. 이 목록에는 "활성 앱"이라는 레이블이 적용되어 있습니다. 각 앱의 옆에는 "중지" 버튼이 있습니다. 아래 그림은 Android 13을 실행하는 기기에서 FGS 작업 관리자 워크플로를 보여줍니다.
FGS 작업 관리자를 통해 앱 중지하기
사용자가 FGS 작업 관리자에서 앱 옆의 중지 버튼을 누르면 실행 중인 포그라운드 서비스만이 아니라 앱 전체가 중지됩니다.
"FGS Task manager" vs "Swipe up" vs "Force stop" 동작 비교
아래의 표에서 FGS 작업 관리자와 "최근 화면의 swipe-up" 동작 및 "오작동 중인 앱의 Force stop" 동작이 어떻게 다른지 확인 할 수 있습니다.
FGS Task manager에서 앱을 중지하는 경우 콜백 전송
사용자가 FGS Task manager의 "중지" 버튼을 누르면 시스템이 앱에 콜백을 보내지 않습니다. 앱이 다시 시작될 때 기존 ApplicationExitInfo API의 일부분인 새로운 REASON_USER_REQUESTED를 확인하는 것이 도움이 될 수 있습니다.
오랫동안 실행되는 포그라운드 서비스에 관한 시스템 메시지
앱이 포그라운드 서비스를 오랫동안(24시간 중에서 20시간 이상) 실행하는 것을 시스템이 감지할 경우, 시스템은 사용자에게 FGS 작업 관리자를 확인하도록 안내하는 알림을 보냅니다.
사용자에게 오랫동안 실행되는 포그라운드 서비스를 알려주는 새로운 시스템 알림에 대해서는 아래 링크를 참고해주세요.
https://developer.android.com/about/versions/13/changes/battery#system-notification-long-running-fgs
예외
시스템은 특정 유형의 앱에 대해 여러 수준의 예외를 제공합니다.
예외는 프로세스가 아닌 앱별로 적용되므로 시스템이 앱에서 하나의 프로세스에만 예외를 제공한 경우에도 이 앱의 다른 모든 프로세스에 예외가 적용됩니다.
FGS 작업 관리자에 표시되지 않는 경우
아래와 같은 앱은 포그라운드 서비스를 실행해도 작업 관리자에 전혀 표시되지 않습니다.
- 시스템 수준 앱
- 안전 앱(ROLE_EMERGENCY 역할이 있는 앱)
- 데모 모드인 기기
사용자가 앱을 중지할 수 없는 경우
아래와 같은 유형의 앱이 포그라운드 서비스를 실행하면 FGS 작업 관리자에 표시되기는 하나 앱 옆에 사용자가 누를 수 있는 중지 버튼이 없습니다.
- 기기 소유자 앱 -> https://source.android.com/devices/tech/admin/provision
- 프로필 소유자 앱 -> https://source.android.com/devices/tech/admin/managed-profiles#profile_owners
- 지속 앱 -> https://developer.android.com/guide/topics/manifest/application-element#persistent
- ROLE_DIALER 역할이 있는 앱 -> https://developer.android.com/reference/android/app/role/RoleManager#ROLE_DIALER
테스트
사용자가 앱을 중지하는 동안에 그리고 앱을 중지한 후에 앱이 예상대로 동작하는지 테스트하려면 터미널창에서 아래 ADB 명령어를 입력하면 됩니다.
adb shell cmd activity stop-app <PACKAGE_NAME>
'학습' 카테고리의 다른 글
Android 13 - 5편 (Notification permission) (0) | 2022.07.22 |
---|---|
Android 13 - 4편 (Battery Resource Utilization) (0) | 2022.07.20 |
Android 13 - 2편 (android 13 이상을 타겟팅하는 앱) (0) | 2022.07.15 |
Android 13 - 1편 (모든 앱) (0) | 2022.07.13 |
Android 12를 타겟으로 빌드하기 (0) | 2022.02.08 |