[Player model] Handle DeadSystemException#1937
Merged
Conversation
Add this new helper class to handle DeadSystemException and NameNotFoundException to encapsulate these error handling details from the Android API method packageManager.getPackageInfo.
Add this new helper class to handle DeadSystemException to encapsulate these error handling details with the Android API. Also added a caching layer as a DeadSystemException could happen anytime and caching gives us better stability and performance.
Under the hood isHuaweiMobileServicesAvailable uses getApplicationInfo which can throw this Android level expection.
Handle DeadSystemException that can be thrown from getNotificationChannels
nan-li
approved these changes
Dec 14, 2023
18 tasks
Merged
18 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
One Line Summary
Catch
DeadSystemExceptionto prevent red herring crash reports.Details
Motivation
DeadSystemExceptionhappens after a the app is in a bad state, not the root cause. Suppressing these as they are a red herring.Scope
Wrap Android APIs known to throw
DeadSystemExceptionin helper functions to handle this exception. This includes;getApplicationInfo,getPackageInfo, andisHuaweiMobileServicesAvailable(seems to usegetPackageInfounder its hood).What is a DeadSystemException
From Android's docs:
Also from Android's source code:
Since this exception is not the fault of the app (or SDK) there isn't anything the app (or SDK) can do to recover from such a state. Catching and ignoring these won't improve the end-user experience since the app is already being killed, however doing so will clean up the noise from crash statistics, hopefully allowing the developer to discover the root cause.
Testing
Unit testing
Manual testing
Tested with an Android 14 emulator, device subscribes and receives notifications. Also ensured disabling badges works. Also on a Android 6.0 emulator, ensuring the notification title defaults to the app label correctly.
Affected code checklist
Checklist
Overview
Testing
Final pass
This change is