-
Android 14 - Additional restrictions on starting activities from the background프로그래밍/Android 2023. 6. 2. 15:26반응형
그동안 Google은 Background 에서 실행되는 Android component를 제한해왔다.
- Android 10
- Restrictions on starting activities from the background
- Android 12
- Foreground service launch restrictions
- Restrictions on background starts
Android 14에서는 Android 10 의 Background에서 실행되는 Activity 제한 내용 + 좀 더 제한을 강화한다.
PenndingIntent
Android는 PendingIntent를 이용해 특정 시점에 Activity를 실행할 수 있는데 PendingIntent에 대한 설명은 아래 블로그 내용이 참 정리가 잘 되어있다.
https://velog.io/@haero_kim/Android-PendingIntent-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0
Restrictions on starting activities from the background (Android 10)
- The app receives a notification PendingIntent from the system. In the case of pending intents for services and broadcast receivers, the app can start activities for a few seconds after the pending intent is sent.
- 여기도 말이 좀 애매하긴한데, Notification으로부터 열린 Service나 BroadcastReceiver는 몇 초 후에 Acitivity를 열 수 있다는 뉘앙스이다.
- 직접 확인해본 바로는 Android 10 부터는 Notification으로부터 열린 Service나 BroadcastReceiver는 직접 Activity를 열 수 없다.
- The app has a service that is bound by a different, visible app. The app bound to the service must remain visible for the app in the background to start activities successfully.
- 말이 좀 애매하긴한데, Android 10 이전에는 바인드된 서비스가 앱이 background 상태에서 Activity를 열 수 있었다.
- Android 10 부터는 바인드된 서비스가 앱이 background 상태면 Activity를 열 수 없다. Activity를 열려면 서비스 바인드된 앱이 화면에 보이는 상태여야 한다.
Additional restrictions on starting activities from the background (Android 14)
- When an app sends a PendingIntent using PendingIntent#send() or similar methods, the app must now opt in if it wants to grant its own background activity launch privileges to start the pending intent. To opt in, the app should pass an ActivityOptions bundle with setPendingIntentBackgroundActivityStartMode(MODE_BACKGROUND_ACTIVITY_START_ALLOWED).
- TargetSdkVersion을 14로 올렸을 때 PendingIntent에 대한 추가적인 제한.
- Android 10부터는 Notification 에서 열린 Service나 BroadcastReceiver로 Activity를 열 때 제한이었지만, Notification(PendingIntent)를 이용해서 background activity를 열려면 위에 Flag가 필요하다는 이야기인 것 같다.
- 그런데 확인해봤을 땐 Flag 없어도 Crash 발생하지 않음.
- 애매해서 issue tracker에 문의글 남김
- PendingIntent#getActivity()
- PendingIntent#send()
- 확인 필요
- TargetSdkVersion을 14로 올렸을 때 PendingIntent에 대한 추가적인 제한.
- When a visible app binds a service of another app that's in the background using the bindService() method, the visible app must now opt in if it wants to grant its own background activity launch privileges to the bound service. To opt in, the app should include the BIND_ALLOW_ACTIVITY_STARTS flag when calling the bindService() method.
- If binding from an app that is visible, the bound service is allowed to start an activity from background. This was the default behavior before SDK version Build.VERSION_CODES.UPSIDE_DOWN_CAKE. Since then, the default behavior changed to disallow the bound service to start a background activity even if the app bound to it is in foreground, unless this flag is specified when binding.
- TargetSdkVersion을 14로 올렸을 때 바인딩된 Service 에 대한 추가적인 제한.
- Android 10부터는 바인딩된 Service에서 보이는 앱에 대한 Acitivity를 여는게 가능했지만, Andorid 14 타겟한 앱은 그마저도 불가능하다는 이야기인 것 같다.
- 그런데 확인해봤을 땐 Flag 없어도 Crash 발생하지 않음.
- 애매하다.. issue tracker 의 답변을 기다려보아야겠다
- bindService() 호출하는 Service에서 Activity 여나 확인 필요
- TargetSdkVersion을 14로 올렸을 때 바인딩된 Service 에 대한 추가적인 제한.
- If binding from an app that is visible, the bound service is allowed to start an activity from background. This was the default behavior before SDK version Build.VERSION_CODES.UPSIDE_DOWN_CAKE. Since then, the default behavior changed to disallow the bound service to start a background activity even if the app bound to it is in foreground, unless this flag is specified when binding.
Refers
- https://youtu.be/MsNraIQ6mUI?list=RDCMUCVHFbqXqoYvEWM1Ddxl0QDg&t=1098
- https://developer.android.com/about/versions/14/behavior-changes-14#background-activity-restrictions
반응형'프로그래밍 > Android' 카테고리의 다른 글
Android 14 - Apps can kill only their own background processes (0) 2023.05.31 Android 14 - Foreground Service types (0) 2023.05.30 Jetpack compose - Custom layout (0) 2022.12.12 Android 13 - Battery Resource Utilization (0) 2022.08.11 Android 13 - Programmable shaders (0) 2022.06.03 - Android 10