react-native-background-fetch: Android app is crashing (in background) when headlessJS job is fired in release variant

Your Environment

  • Plugin version: 2.6.0
  • Platform: Android
  • OS version: 8.0.0
  • Device manufacturer / model: Samsung Galaxy S7
  • React Native version: 0.59.8
  • Plugin config

minimumFetchInterval: 15, stopOnTerminate: false, startOnBoot: true, enableHeadless: true,

Expected Behavior

Android app shouldn’t crash whenever Headless JS Task is fired.

Actual Behavior

Android app is crashing in release build whenever Headless JS Task is fired.

Steps to Reproduce

  1. Configure bgfetch
  2. Instal release variant of android app
  3. Run adb shell cmd jobscheduler run -f com.xxx 999
  4. App is crashing

Code

componentDidMount() {
  setUpBackgroundTask()
  BackgroundFetch.registerHeadlessTask(setUpBackgroundTask)
}

const setUpBackgroundTask = () => {
  BackgroundFetch.configure(
    {
      minimumFetchInterval: 15,
      stopOnTerminate: false,
      startOnBoot: true,
      enableHeadless: true,
    },
    () => {
      _checkTerminatingAndTerminate()
    }
  )
  BackgroundFetch.status(status => {
    switch (status) {
      case BackgroundFetch.STATUS_RESTRICTED:
        showAlertMessage(
          determineErrorMessage(
            {
              response: {
                err_code: "ERROR_BACKGROUND_APP_REFRESH_RESTRICTED",
              },
            },
            () => {
              store.dispatch(setDrivingModeOff())
            }
          )
        )
        break
      case BackgroundFetch.STATUS_DENIED:
        showAlertMessage(
          determineErrorMessage(
            {
              response: {
                err_code: "ERROR_BACKGROUND_APP_REFRESH_DENIED",
              },
            },
            () => {
              store.dispatch(setDrivingModeOff())
            }
          )
        )
        break
    }
  })
}

Debug logs

07-23 14:03:00.277  5812  5812 D TSBackgroundFetch: HeadlessJobService onStartJob
07-23 14:03:00.351  5812  5812 D ReactNative: ReactInstanceManager.createReactContextInBackground()
07-23 14:03:00.351  5812  5812 D ReactNative: ReactInstanceManager.recreateReactContextInBackgroundInner()
07-23 14:03:00.351  5812  5812 D ReactNative: ReactInstanceManager.recreateReactContextInBackgroundFromBundleLoader()
07-23 14:03:00.351  5812  5812 D ReactNative: ReactInstanceManager.recreateReactContextInBackground()
07-23 14:03:00.351  5812  5812 D ReactNative: ReactInstanceManager.runCreateReactContextOnNewThread()
07-23 14:03:00.362  5812  5834 D ReactNative: ReactInstanceManager.createReactContext()
07-23 14:03:00.441  5812  5834 D ReactNative: Initializing React Xplat Bridge.
07-23 14:03:00.446  5812  5834 D ReactNative: Initializing React Xplat Bridge before initializeBridge
07-23 14:03:00.461  5812  5834 D ReactNative: Initializing React Xplat Bridge after initializeBridge
07-23 14:03:00.461  5812  5834 D ReactNative: CatalystInstanceImpl.runJSBundle()
07-23 14:03:00.479  5812  5839 D ReactNative: ReactInstanceManager.setupReactContext()
07-23 14:03:00.479  5812  5839 D ReactNative: CatalystInstanceImpl.initialize()
07-23 14:03:00.985  5812  5812 D TSBackgroundFetch: onHeadlessJsTaskStart: 1

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 18 (10 by maintainers)

Most upvoted comments

Of course.