Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix timers in headless tasks on bridgeless mode #47496

Conversation

j-piasecki
Copy link
Collaborator

Summary:

Fixes #47495

JavaTimerManager is being registered to receive headless tasks events in the TimingModule. This module is not used on bridgeless: 1, 2 and since it's loaded lazily, the event listener is never registered.

This PR moves registration to the constructor of JavaTimerManager and deregistration to the onInstanceDestroy method. This way the event listener is always registered when an instance of the timer manager exists.

Changelog:

[ANDROID] [FIXED] - Fix timers in headless tasks on bridgeless mode

Test Plan:

See the reproducer from the issue

@facebook-github-bot facebook-github-bot added CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. p: Software Mansion Partner: Software Mansion Partner Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team. labels Nov 7, 2024
@lovegaoshi
Copy link

can confirm this works. tysm!

@facebook-github-bot
Copy link
Contributor

@alanleedev has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator.

@facebook-github-bot facebook-github-bot added the Merged This PR has been merged. label Nov 8, 2024
@facebook-github-bot
Copy link
Contributor

@alanleedev merged this pull request in ee7b4e2.

@react-native-bot
Copy link
Collaborator

This pull request was successfully merged by @j-piasecki in ee7b4e2

When will my fix make it into a release? | How to file a pick request?

blakef pushed a commit that referenced this pull request Nov 12, 2024
Summary:
Fixes #47495

`JavaTimerManager` is being registered to receive headless tasks events in the [`TimingModule`](https://github.com/facebook/react-native/blob/0ee963ea65bcc88122044d51027511e611bde584/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/core/TimingModule.kt#L28-L29). This module is not used on bridgeless: [1](https://github.com/facebook/react-native/blob/0ee963ea65bcc88122044d51027511e611bde584/packages/react-native/Libraries/Core/setUpTimers.js#L44-L61), [2](https://github.com/facebook/react-native/blob/0ee963ea65bcc88122044d51027511e611bde584/packages/react-native/Libraries/Core/setUpTimers.js#L123-L132) and since it's loaded lazily, the event listener is never registered.

This PR moves registration to the constructor of `JavaTimerManager` and deregistration to the `onInstanceDestroy` method. This way the event listener is always registered when an instance of the timer manager exists.

## Changelog:

[ANDROID] [FIXED] - Fix timers in headless tasks on bridgeless mode

Pull Request resolved: #47496

Test Plan: See the reproducer from the issue

Reviewed By: javache

Differential Revision: D65615601

Pulled By: alanleedev

fbshipit-source-id: 6e1d36f8783e813065f79730a928b99c3e385718
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Merged This PR has been merged. p: Software Mansion Partner: Software Mansion Partner Shared with Meta Applied via automation to indicate that an Issue or Pull Request has been shared with the team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Timers don't work in headless tasks and may break in the application when headless tasks are used
4 participants