[Fix] NPE by getScheduleBackgroundRunIn #2212
Merged
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
Fixes a NullPointerException issue thrown by SessionService.getScheduleBackgroundRunIn.
Details
Motivation
With the optimization introduced to
initWithContext
, part of the initialization is now performed in the background afterinitWithContext
is called. This change created a rare race condition where services are accessed shortly after startup, but initialization hasn’t completed. In one scenario, when the app goes into the background before SessionService finishes initializing, a lifecycle callback fires to notify the "unfocus" event, attempting to accessSessionService
, whose component is null at that time. This error can crash the app and disrupt background services. This PR prevents the crash by ensuring that all major components ofSessionService
are available during theinitWithContext
phase.Scope
This PR moves part of
SessionService
initialization fromstart()
(which was previously running in the background afterinitWithContext
) tobootstrap()
, which is called and completed during theinitWithContext
phase.Manual testing
I used a manual approach to reproduce the crash and verify the fix is working for the crash.
Step to reproduce:
After the fix:
Following the same reproduction steps, the error no longer appears, and the session service functions as expected.
Affected code checklist
Checklist
Overview
Testing
Final pass
This change is