React-native-background-geolocation: App still use location data even after Background.stop() and then sometimes it crashed.

Created on 4 Mar 2019  路  85Comments  路  Source: mauron85/react-native-background-geolocation


Your Environment


  • Plugin version: 0.5.0
  • Platform: Android
  • OS version: Detected on android 7,8,9
  • Device manufacturer and model: Samsung, LG, ...
  • Running in Simulator: No
  • React Native version: 0.58.5
  • Plugin configuration options:
    BackgroundGeolocation.configure({
        locationProvider: BackgroundGeolocation.DISTANCE_FILTER_PROVIDER,
        desiredAccuracy: BackgroundGeolocation.HIGH_ACCURACY,
        stationaryRadius: 3,
        debug: false,
        distanceFilter: 3,
        stopOnTerminate: true,
        startOnBoot: false,
        interval: 3000,
        fastestInterval: 3000,
        activitiesInterval: 3000,
        startForeground: false,
        notificationTitle: 'Tracking',
        notificationText': 'Tracking!",
        notificationsEnabled: false,
        pauseLocationUpdates: false,
        saveBatteryOnBackground: false,
        url: URL,
        postTemplate: this.generatePostTemplate(null)
});
    generatePostTemplate(customValue) {
        return {
            latitude: '@latitude',
            longitude: '@longitude',
            inputLoggedAt: '@time',
            accuracy: '@accuracy',
            customValue: customValue,
            os: 'Android'
        };
    }
    reConfigure = () => {
        // When user login, and when customValue changes,
        // I call this function to re-configure the geolocation configuration.
        const loginUser = this.rootStore.userStore.loginUser;
        const customValue = this.rootStore.customStore.customValue;
        const options: Partial<ConfigureOptions> = {};
        if (loginUser) {
            options.httpHeaders = {
                Authorization: `Token ${loginUser.authToken}`
            };
        }
        if (customValue) {
            options.postTemplate = this.generatePostTemplate(customValue);
        }
        BackgroundGeolocation.configure(options);
        if (customValue === null) {
            // I don't need geolocation tracking when customValue is null.
            BackgroundGeolocation.stop();
        }
    };
  • Link to your project:

Context


What I need is tracking geolocation(foreground, background) only between I call BackgroundGeolocation.start, and stop. I don't need sync location of failed data. Only the data between calling start and stop are all I need.

App works great when I start the app, start geolocation and stop geolocation. It works what I expected. However, after couple of hours while app is in background, even I never call BackgroundGeolocation.start(), app starts to use location data(There was a pin marker in android status bar, and when I terminated the app, it disappeared.) and then, app crash again and again.(When app crash, android alert modal appears and there were two selections. Close app, Send comment. Even I press close app, the modal appears again and again.) Also, there was a notification "Sync Location". After I set "notificationEnabled" to false, the "Sync Location" notification disappear, but still app crash again and again after couple of hours.

I think app try to sync location even after I call BackgroundGeolocation.stop() and even I didn't set syncUrl configuration. (The url I set in configuration always return 200, 201 status.)

Expected Behavior


App don't track geolocation before I call start.

Actual Behavior


App use geolocation data and crash even I never call start.

Possible Fix

Steps to Reproduce


  1. Start app(not even start geolocation)
  2. go to background
  3. after couple of hours
    4.

Context

Debug logs

This is a crash report. I think this crash report may be related.

java.lang.IllegalStateException: Not allowed to start service Intent { cmp=kr.oshare.alpaca/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{6c02e96 u0a240 CRE  bg:+4m26s253ms idle procs:1 proclist:19827, seq(0,0,0)}
    at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1666)
    at android.app.ContextImpl.startService(ContextImpl.java:1611)
    at android.content.ContextWrapper.startService(ContextWrapper.java:677)
    at com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand(LocationServiceProxy.java:93)
    at com.marianhello.bgloc.service.LocationServiceProxy.stop(LocationServiceProxy.java:58)
    at com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService(BackgroundGeolocationFacade.java:440)
    at com.marianhello.bgloc.BackgroundGeolocationFacade.destroy(BackgroundGeolocationFacade.java:264)
    at com.marianhello.bgloc.react.BackgroundGeolocationModule.onHostDestroy(BackgroundGeolocationModule.java:125)
    at com.facebook.react.bridge.ReactContext.onHostDestroy(ReactContext.java:228)
    at com.facebook.react.ReactInstanceManager.moveToBeforeCreateLifecycleState(ReactInstanceManager.java:687)
    at com.facebook.react.ReactInstanceManager.onHostDestroy(ReactInstanceManager.java:596)
    at com.facebook.react.ReactInstanceManager.onHostDestroy(ReactInstanceManager.java:610)
    at com.facebook.react.ReactActivityDelegate.onDestroy(ReactActivityDelegate.java:122)
    at com.facebook.react.ReactFragmentActivity.onDestroy(ReactFragmentActivity.java:73)
    at android.app.Activity.performDestroy(Activity.java:7680)
    at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1306)
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4667)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4700)
    at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:39)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:6981)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
java.lang.RuntimeException: Unable to destroy activity {kr.oshare.alpaca/kr.oshare.alpaca.MainActivity}: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=kr.oshare.alpaca/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{6c02e96 u0a240 CRE  bg:+4m26s253ms idle procs:1 proclist:19827, seq(0,0,0)}
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4682)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4700)
    at android.app.servertransaction.DestroyActivityItem.execute(DestroyActivityItem.java:39)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:6981)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
bug stale

Most helpful comment

We're getting the same sort of crash reports from Bugsnag when users are closing our application. I haven't been able to reproduce the crash myself, but there have been multiple reports like this after upgrading from React Native 0.57.something to the newest ones, currently at 0.59.9.

Here's the crash report from Bugsnag:

Unable to destroy activity {mypackage/myapp.MainActivity}: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=mypackage/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{842ac30 u0a210 CEM bg:+2h41m8s344ms idle procs:1 proclist:31355, seq(0,0,0)}

All of these reports have been from users that are on Android 9.

I'm using version 0.5.3 of this package. @mauron85 any idea of what could be causing this? I haven't changed anything in my own code, and in the previous versions of RN this bug was not present.

Here's also a piece of the stacktrace (from bottom to top), crash happens at the top.

--- report sent here (Unable to destroy...) ContextImpl.java:1666android.app.ContextImpl.startServiceCommon ContextImpl.java:1611android.app.ContextImpl.startService ContextWrapper.java:677android.content.ContextWrapper.startService LocationServiceProxy.java:104com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand LocationServiceProxy.java:65com.marianhello.bgloc.service.LocationServiceProxy.stop BackgroundGeolocationFacade.java:440com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService BackgroundGeolocationFacade.java:264com.marianhello.bgloc.BackgroundGeolocationFacade.destroy BackgroundGeolocationModule.java:125com.marianhello.bgloc.react.BackgroundGeolocationModule.onHostDestroy

All 85 comments

+1, this is also happening to me in production. Sometimes the notification in the bar will be my custom notification, and sometimes it will just say something like "Background Tracking".

I am on 0.5.0-alpha.50

I too have seen this upon upgrading to 0.5.0 ...finding it difficult to replicate. The user experience is quite alarming...."Background tracking, ENABLED". Trying to see what is causing it...

same for us - any solutions?

This should be fixed. Try v0.5.3 https://www.npmjs.com/package/@mauron85/react-native-background-geolocation

@mauron85 : i have the same issue, app still using location service after stop service, so if user select whenInUse permission, there is label notice to user that app's using location on app background. I used v0.5.3 as you said above but it still happen. So any solution for this issue ? thanks !!!

@redwind

so if user select whenInUse permission...

are you talking about ios?

so if user select whenInUse permission...

are you talking about ios?

yes, it's iOS, i forgot to note that. I don't know why but it happened when i used code bellow:

BackgroundGeolocation.getCurrentLocation(
          position => {     
            resolve(position);
          },
          err => {           
            resolve();
          },
          {
            maximumAge: 100,
            enableHighAccuracy: true
          }
        );

with enableHighAccuracy: true it'll notice that app's using location when app background

@mauron85 this is still happening on android v0.5.3.
steps to reproduce:

  1. start background location services with stopOnTerminate:true & startForeground:true
  2. stop background location services
  3. swipe app from list

Sticky Notification appears.

I don't know if this is related to this issue.

@mauron85
It happens to me too, when ever i kill app background service start to work and show me default notification : Background tracking ENABLED

android 5... it doesn't happen in android 8

"@mauron85/react-native-background-geolocation": "^0.5.3",
"react-native": "0.59.5",


BackgroundGeolocation.configure({
    locationProvider: BackgroundGeolocation.RAW_PROVIDER,
    stopOnTerminate: true,
    startOnBoot: false,
    startForeground: true,
    ....
});

After downgrading to
"react-native-mauron85-background-geolocation": "^0.5.0-alpha.16",
every thing work fine

Running into the same issue. Lots of crash reports coming in but so far I haven't been able to reproduce anything. @AE0011 that version doesn't exist and will use 0.5.3.

We're only seeing this in Android 9.

@N1ghtly but i'm using it! i don't know maybe it installed from cache or sth

After i have implemented my native module i found out that there is some problems after killing the app from the list, even when I didn't implement BG loc in my react native app at all, just importing Package in MainApplication(that happened only on Android 8.0.0 but in some situations I also got an old instance of my module etc). After many hours of logging i found out that onHostDestroy of my module was invoked after the onHostDestroy of BG location. That made the service restart? (it wasnt even started) through onStartCommand with null intent - I guess thats the method to revive service when app kills it on its own. I've put my module package on top of the getPackages list and also got rid of runOnUiThread to do something after onHostDestroy. It seems to work now.

We're getting the same sort of crash reports from Bugsnag when users are closing our application. I haven't been able to reproduce the crash myself, but there have been multiple reports like this after upgrading from React Native 0.57.something to the newest ones, currently at 0.59.9.

Here's the crash report from Bugsnag:

Unable to destroy activity {mypackage/myapp.MainActivity}: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=mypackage/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{842ac30 u0a210 CEM bg:+2h41m8s344ms idle procs:1 proclist:31355, seq(0,0,0)}

All of these reports have been from users that are on Android 9.

I'm using version 0.5.3 of this package. @mauron85 any idea of what could be causing this? I haven't changed anything in my own code, and in the previous versions of RN this bug was not present.

Here's also a piece of the stacktrace (from bottom to top), crash happens at the top.

--- report sent here (Unable to destroy...) ContextImpl.java:1666android.app.ContextImpl.startServiceCommon ContextImpl.java:1611android.app.ContextImpl.startService ContextWrapper.java:677android.content.ContextWrapper.startService LocationServiceProxy.java:104com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand LocationServiceProxy.java:65com.marianhello.bgloc.service.LocationServiceProxy.stop BackgroundGeolocationFacade.java:440com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService BackgroundGeolocationFacade.java:264com.marianhello.bgloc.BackgroundGeolocationFacade.destroy BackgroundGeolocationModule.java:125com.marianhello.bgloc.react.BackgroundGeolocationModule.onHostDestroy

@juusopitkanen : which resolve this issue ???
I have same error.

@mauron85 I'm also encountering this issue on
Android 9
geolocation: 0.53
react-native: 0.59.10

java.lang.IllegalStateException Not allowed to start service Intent { cmp=com.pie/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{fdb0719 u0a614 CEM bg:+5m58s251ms idle procs:1 proclist:23798, seq(4725,4725,4725)}
ContextImpl.java:1666 android.app.ContextImpl.startServiceCommon
ContextImpl.java:1611 android.app.ContextImpl.startService
ContextWrapper.java:677 android.content.ContextWrapper.startService
LocationServiceProxy.java:104 com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand
LocationServiceProxy.java:65 com.marianhello.bgloc.service.LocationServiceProxy.stop
BackgroundGeolocationFacade.java:440 com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService
BackgroundGeolocationFacade.java:244 com.marianhello.bgloc.BackgroundGeolocationFacade.stop
BackgroundGeolocationModule.java:142 com.marianhello.bgloc.react.BackgroundGeolocationModule.stop
Method.java:-2 java.lang.reflect.Method.invoke
JavaMethodWrapper.java:372 com.facebook.react.bridge.JavaMethodWrapper.invoke
JavaModuleWrapper.java:158 com.facebook.react.bridge.JavaModuleWrapper.invoke
NativeRunnable.java:-2 com.facebook.react.bridge.queue.NativeRunnable.run
Handler.java:873 android.os.Handler.handleCallback
Handler.java:99 android.os.Handler.dispatchMessage
MessageQueueThreadHandler.java:29 com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
Looper.java:214 android.os.Looper.loop
MessageQueueThreadImpl.java:232 com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
Thread.java:764 java.lang.Thread.run

@boaz-lachman. Can you try to reproduce with option startForeground: true?

@mauron85 thanks for the fast reply.

But isn't stop supposed to kill the background-geolocation service?

After short looking at all logs posted here. It may really be a plugin to blame. Service tries to stop itself by sending stop Intent when app is being killed. However it's already considered to be in the background (not sure why) and bg apps cannot send Intents anymore.

I believe this only happens when user is destroying app by swiping from a app list. So at least it doesn't happen when app is running, but only when app is being killed.

@mauron85
Actually this also happened to me when the app was in background for about an hour

@boaz-lachman Can you post adb logs from before the crash event?

This is the adb log from bugsnag before crash:

ContextImpl.java:1666android.app.ContextImpl.startServiceCommon 
ContextImpl.java:1611android.app.ContextImpl.startService   
ContextWrapper.java:677android.content.ContextWrapper.startService  
LocationServiceProxy.java:104com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand    
LocationServiceProxy.java:65com.marianhello.bgloc.service.LocationServiceProxy.stop 
BackgroundGeolocationFacade.java:440com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService 
BackgroundGeolocationFacade.java:244com.marianhello.bgloc.BackgroundGeolocationFacade.stop  
BackgroundGeolocationModule.java:142com.marianhello.bgloc.react.BackgroundGeolocationModule.stop    
Method.java:-2java.lang.reflect.Method.invoke   
JavaMethodWrapper.java:372com.facebook.react.bridge.JavaMethodWrapper.invoke    
JavaModuleWrapper.java:158com.facebook.react.bridge.JavaModuleWrapper.invoke    
NativeRunnable.java:-2com.facebook.react.bridge.queue.NativeRunnable.run    
Handler.java:873android.os.Handler.handleCallback   
Handler.java:99android.os.Handler.dispatchMessage   
MessageQueueThreadHandler.java:29com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage  
Looper.java:214android.os.Looper.loop   
MessageQueueThreadImpl.java:232com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run 
Thread.java:764java.lang.Thread.run 
Thread 28988路Jit thread pool worker thread 0
Thread 28989路Signal Catcher
Thread 28990路ReferenceQueueDaemon
Object.java:-2java.lang.Object.wait 
Daemons.java:178java.lang.Daemons$ReferenceQueueDaemon.runInternal  
Daemons.java:103java.lang.Daemons$Daemon.run    
Thread.java:764java.lang.Thread.run 
Thread 28991路FinalizerDaemon
Object.java:-2java.lang.Object.wait 
Object.java:422java.lang.Object.wait    
ReferenceQueue.java:188java.lang.ref.ReferenceQueue.remove  
ReferenceQueue.java:209java.lang.ref.ReferenceQueue.remove  
Daemons.java:232java.lang.Daemons$FinalizerDaemon.runInternal   
Daemons.java:103java.lang.Daemons$Daemon.run    
Thread.java:764java.lang.Thread.run 
Thread 28992路FinalizerWatchdogDaemon
Object.java:-2java.lang.Object.wait 
Daemons.java:297java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded  
Daemons.java:277java.lang.Daemons$FinalizerWatchdogDaemon.runInternal   
Daemons.java:103java.lang.Daemons$Daemon.run    
Thread.java:764java.lang.Thread.run 
Thread 28993路HeapTaskDaemon
Thread 28994路Binder:23798_1
Thread 28995路Binder:23798_2
Thread 28998路queued-work-looper
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 28999路Bugsnag Thread #1
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run 
Thread 29000路ConnectivityThread
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 29001路Bugsnag Thread #2
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run 
Thread 29002路Bugsnag Thread #3
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run 
Thread 29003路StethoListener-main
Linux.java:-2libcore.io.Linux.accept    
BlockGuardOs.java:59libcore.io.BlockGuardOs.accept  
Os.java:41android.system.Os.accept  
LocalSocketImpl.java:336android.net.LocalSocketImpl.accept  
LocalServerSocket.java:91android.net.LocalServerSocket.accept   
LocalSocketServer.java:85com.facebook.stetho.server.LocalSocketServer.listenOnAddress   
LocalSocketServer.java:74com.facebook.stetho.server.LocalSocketServer.run   
ServerManager.java:40com.facebook.stetho.server.ServerManager$1.run 
Thread 29007路HybridData DestructorThread
Object.java:-2java.lang.Object.wait 
Object.java:422java.lang.Object.wait    
ReferenceQueue.java:188java.lang.ref.ReferenceQueue.remove  
ReferenceQueue.java:209java.lang.ref.ReferenceQueue.remove  
DestructorThread.java:63com.facebook.jni.DestructorThread$1.run 
Thread 29009路RenderThread
Thread 29010路mqt_js
NativeRunnable.java:-2com.facebook.react.bridge.queue.NativeRunnable.run    
Handler.java:873android.os.Handler.handleCallback   
Handler.java:99android.os.Handler.dispatchMessage   
MessageQueueThreadHandler.java:29com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage  
Looper.java:214android.os.Looper.loop   
MessageQueueThreadImpl.java:232com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run 
Thread.java:764java.lang.Thread.run 
Thread 29012路Bugsnag Thread #4
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run 
Thread 29016路Timer-0
Object.java:-2java.lang.Object.wait 
Object.java:422java.lang.Object.wait    
Timer.java:559java.util.TimerThread.mainLoop    
Timer.java:512java.util.TimerThread.run 
Thread 29017路Alarm
Thread 29020路Binder:23798_3
Thread 29022路magnifier pixel copy result handler
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 29023路FrescoLightWeightBackgroundExecutor-1
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29024路FrescoIoBoundExecutor-1
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29025路FrescoIoBoundExecutor-2
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29026路FrescoDecodeExecutor-1
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29027路FrescoDecodeExecutor-2
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29028路FrescoBackgroundExecutor-1
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29035路CookieMonsterCl
Thread 29036路OkHttp ConnectionPool
Object.java:-2java.lang.Object.wait 
ConnectionPool.java:66okhttp3.ConnectionPool$1.run  
ThreadPoolExecutor.java:1167java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run 
Thread 29037路SQLitePlugin:pie_meta
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 29038路SQLitePlugin:company_177
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 29039路SQLitePlugin:company_8
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 29042路GAC_Executor[0]
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Unknown:7com.google.android.gms.internal.zzbhc.run  
Thread.java:764java.lang.Thread.run 
Thread 29043路GAC_Executor[1]
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Unknown:7com.google.android.gms.internal.zzbhc.run  
Thread.java:764java.lang.Thread.run 
Thread 29048路FrescoDecodeExecutor-3
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29049路FrescoBackgroundExecutor-2
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29050路SQLitePlugin:pie_log
MessageQueue.java:-2android.os.MessageQueue.nativePollOnce  
MessageQueue.java:326android.os.MessageQueue.next   
Looper.java:181android.os.Looper.loop   
HandlerThread.java:65android.os.HandlerThread.run   
Thread 29051路Okio Watchdog
Object.java:-2java.lang.Object.wait 
AsyncTimeout.java:311com.android.okhttp.okio.AsyncTimeout.awaitTimeout  
AsyncTimeout.java:40com.android.okhttp.okio.AsyncTimeout.access$000 
AsyncTimeout.java:286com.android.okhttp.okio.AsyncTimeout$Watchdog.run  
Thread 29052路FrescoBackgroundExecutor-3
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29053路FrescoBackgroundExecutor-4
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29054路FrescoDecodeExecutor-4
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29055路FrescoBackgroundExecutor-5
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29064路FrescoDecodeExecutor-5
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 29066路AssetManagerFil
Thread 29067路DefaultFileSour
Thread 29068路LocalFileSource
Thread 29072路OkHttp ConnectionPool
Object.java:-2java.lang.Object.wait 
ConnectionPool.java:66okhttp3.ConnectionPool$1.run  
ThreadPoolExecutor.java:1167java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run 
Thread 78714路FrescoBackgroundExecutor-6
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 78716路FrescoDecodeExecutor-6
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 78720路Binder:23798_4
Thread 78735路FrescoBackgroundExecutor-7
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 78740路Binder:23798_5
Thread 78741路FrescoBackgroundExecutor-8
Object.java:-2java.lang.Object.wait 
Thread.java:2137java.lang.Thread.parkFor$   
Unsafe.java:358sun.misc.Unsafe.park 
LockSupport.java:190java.util.concurrent.locks.LockSupport.park 
AbstractQueuedSynchronizer.java:2059java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await 
LinkedBlockingQueue.java:442java.util.concurrent.LinkedBlockingQueue.take   
ThreadPoolExecutor.java:1092java.util.concurrent.ThreadPoolExecutor.getTask 
ThreadPoolExecutor.java:1152java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
PriorityThreadFactory.java:51com.facebook.imagepipeline.core.PriorityThreadFactory$1.run    
Thread.java:764java.lang.Thread.run 
Thread 78772路OkHttp https://pie.com:5988/...
NativeCrypto.java:-2com.android.org.conscrypt.NativeCrypto.SSL_read 
NativeSsl.java:407com.android.org.conscrypt.NativeSsl.read  
ConscryptFileDescriptorSocket.java:579com.android.org.conscrypt.ConscryptFileDescriptorSocket$SSLInputStream.read   
Okio.java:140okio.Okio$2.read   
AsyncTimeout.java:237okio.AsyncTimeout$2.read   
RealBufferedSource.java:68okio.RealBufferedSource.request   
RealBufferedSource.java:61okio.RealBufferedSource.require   
RealBufferedSource.java:303okio.RealBufferedSource.readHexadecimalUnsignedLong  
Http1Codec.java:444okhttp3.internal.http1.Http1Codec$ChunkedSource.readChunkSize    
Http1Codec.java:425okhttp3.internal.http1.Http1Codec$ChunkedSource.read 
RealBufferedSource.java:47okio.RealBufferedSource.read  
ForwardingSource.java:35okio.ForwardingSource.read  
ProgressResponseBody.java:56com.facebook.react.modules.network.ProgressResponseBody$1.read  
RealBufferedSource.java:47okio.RealBufferedSource.read  
CacheInterceptor.java:183okhttp3.internal.cache.CacheInterceptor$1.read 
RealBufferedSource.java:439okio.RealBufferedSource$1.read   
InputStream.java:101java.io.InputStream.read    
NetworkingModule.java:597com.facebook.react.modules.network.NetworkingModule.readWithProgress   
NetworkingModule.java:58com.facebook.react.modules.network.NetworkingModule.access$500  
NetworkingModule.java:519com.facebook.react.modules.network.NetworkingModule$2.onResponse   
RealCall.java:135okhttp3.RealCall$AsyncCall.execute 
NamedRunnable.java:32okhttp3.internal.NamedRunnable.run 
ThreadPoolExecutor.java:1167java.util.concurrent.ThreadPoolExecutor.runWorker   
ThreadPoolExecutor.java:641java.util.concurrent.ThreadPoolExecutor$Worker.run   
Thread.java:764java.lang.Thread.run

@mauron85 I have the startForeground option set to true, and this still keeps happening. I've tried numerous things & played with the settings but nothing has helped. As you stated, this only happens when the user is killing the app, so it's not a huge problem, but still it's annoying because it keeps showing up in the crash reports.

Also, this only started happening after updating React Native from 0.57.something to the current ones (was 0.59.something when I posted my first message, currently on the newest one).

@boaz-lachman Your report is missing line with exception. Usually few lines above. Something like java.lang.IllegalStateException: Not allowed to start... I need that line and full stacktrace.

@juusopitkanen. It probably worked because older Android SDK didn't have that restrictrion about not starting service from the background. And newer RN migrated to newer SDK so the problem started to occur.

@mauron85 here is the line with exception:

java.lang.IllegalStateException Not allowed to start service Intent { cmp=com.pie/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{fdb0719 u0a614 CEM bg:+5m58s251ms idle procs:1 proclist:23798, seq(4725,4725,4725)}
ContextImpl.java:1666 android.app.ContextImpl.startServiceCommon
ContextImpl.java:1611 android.app.ContextImpl.startService
ContextWrapper.java:677 android.content.ContextWrapper.startService
LocationServiceProxy.java:104 com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand
LocationServiceProxy.java:65 com.marianhello.bgloc.service.LocationServiceProxy.stop
BackgroundGeolocationFacade.java:440 com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService
BackgroundGeolocationFacade.java:244 com.marianhello.bgloc.BackgroundGeolocationFacade.stop
BackgroundGeolocationModule.java:142 com.marianhello.bgloc.react.BackgroundGeolocationModule.stop
Method.java:-2 java.lang.reflect.Method.invoke
JavaMethodWrapper.java:372 com.facebook.react.bridge.JavaMethodWrapper.invoke
JavaModuleWrapper.java:158 com.facebook.react.bridge.JavaModuleWrapper.invoke
NativeRunnable.java:-2 com.facebook.react.bridge.queue.NativeRunnable.run
Handler.java:873 android.os.Handler.handleCallback
Handler.java:99 android.os.Handler.dispatchMessage
MessageQueueThreadHandler.java:29 com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
Looper.java:214 android.os.Looper.loop
MessageQueueThreadImpl.java:232 com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
Thread.java:764 java.lang.Thread.run

@boaz-lachman Ok, your report is really bit different. Doesn't occur on onHostDestroy (app kill), but rather on regular stop event. Can you tell me, where do you call plugin stop method?

@boaz-lachman Doing something like may crash too.

    BackgroundGeolocation.on('background', () => {
     BackgroundGeolocation.stop();
    });

@mauron85 I call when the appstate is in the background:

AppState.addEventListener('change', (appState) => {
if (appState == "background") {
BackgroundGeolocation.stop();
}
});

@boaz-lachman well that might explain the crash. It's basically same issue as described here after all (slightly different, but root cause is the same). One fix should fix them both.

@mauron85

so the cause of this issue is incompatibility with new sdk?

Also will this fix be hard to apply?

so the cause of this issue is incompatibility with new sdk?

basically yes, however I could foresight this when I was adjusting plugin to Oreo (API level 26).

Also will this fix be hard to apply?

for you, NO

@mauron85
Thank you for all of your help
during react-native upgrades a lot can happen :)
Will the fix be applied only in the next version or will you release a hotfix?

hi @mauron85 any progress regarding this issue?

@boaz-lachman Can you please try to add

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

to your app manifest?

EDIT: You must be targeting Android SDK 28 to make this work.

@mauron85
I've already added this permission to the app manifest and I am targeting sdk 28.
I've noticed that making the location a foreground service does prevent the situation from occuring but I've also noticed as a result that the location service works sometimes even after the service is stopped (the notification is still up after stopping)

Ok. Just released new version 0.5.6. Should fix your issue. No need to add FOREGROUND_SERVICE permission, plugin will do it automatically.

@mauron85
Thank you very much
will check it out

@mauron85 does this mean that the notification usage is still mandatory?

Yes

understood thank you

@mauron85 I updated the plugin to the newest version (0.5.6) but still keep getting these "Unable to destroy activity" crash reports when users are terminating the application / destroying the main activity.

@boaz-lachman did the update fix it for you?

@juusopitkanen please post your adb logs

@mauron85 Here is the stacktrace from Bugsnag, I haven't been able to reproduce this myself. Is this enough?

`java.lang.RuntimeException Unable to destroy activity {mypackage/mypackage.MainActivity}: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=mypackage/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{ba5f4ca u0a229 CEM bg:+6h22m34s12ms idle procs:1 proclist:26264, seq(720,720,720)}
ActivityThread.java:4702 android.app.ActivityThread.performDestroyActivity
ActivityThread.java:4725 android.app.ActivityThread.handleDestroyActivity
DestroyActivityItem.java:39 android.app.servertransaction.DestroyActivityItem.execute
TransactionExecutor.java:145 android.app.servertransaction.TransactionExecutor.executeLifecycleState
TransactionExecutor.java:70 android.app.servertransaction.TransactionExecutor.execute
ActivityThread.java:1947 android.app.ActivityThread$H.handleMessage
Handler.java:106 android.os.Handler.dispatchMessage
Looper.java:214 android.os.Looper.loop
ActivityThread.java:7032 android.app.ActivityThread.main
Method.java:-2 java.lang.reflect.Method.invoke
RuntimeInit.java:493 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run
ZygoteInit.java:964 com.android.internal.os.ZygoteInit.main

Caused by: java.lang.IllegalStateException Not allowed to start service Intent { cmp=mypackage/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{ba5f4ca u0a229 CEM bg:+6h22m34s12ms idle procs:1 proclist:26264, seq(720,720,720)}
ContextImpl.java:1666 android.app.ContextImpl.startServiceCommon
ContextImpl.java:1611 android.app.ContextImpl.startService
ContextWrapper.java:677 android.content.ContextWrapper.startService
LocationServiceProxy.java:114 com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand
LocationServiceProxy.java:75 com.marianhello.bgloc.service.LocationServiceProxy.stop
BackgroundGeolocationFacade.java:447 com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService
BackgroundGeolocationFacade.java:267 com.marianhello.bgloc.BackgroundGeolocationFacade.destroy
BackgroundGeolocationModule.java:125 com.marianhello.bgloc.react.BackgroundGeolocationModule.onHostDestroy
ReactContext.java:252 com.facebook.react.bridge.ReactContext.onHostDestroy
ReactInstanceManager.java:688 com.facebook.react.ReactInstanceManager.moveToBeforeCreateLifecycleState
ReactInstanceManager.java:597 com.facebook.react.ReactInstanceManager.onHostDestroy
ReactInstanceManager.java:611 com.facebook.react.ReactInstanceManager.onHostDestroy
ReactActivityDelegate.java:122 com.facebook.react.ReactActivityDelegate.onDestroy
ReactActivity.java:70 com.facebook.react.ReactActivity.onDestroy
Activity.java:7681 android.app.Activity.performDestroy
Instrumentation.java:1306 android.app.Instrumentation.callActivityOnDestroy
ActivityThread.java:4687 android.app.ActivityThread.performDestroyActivity
ActivityThread.java:4725 android.app.ActivityThread.handleDestroyActivity
DestroyActivityItem.java:39 android.app.servertransaction.DestroyActivityItem.execute
TransactionExecutor.java:145 android.app.servertransaction.TransactionExecutor.executeLifecycleState
TransactionExecutor.java:70 android.app.servertransaction.TransactionExecutor.execute
ActivityThread.java:1947 android.app.ActivityThread$H.handleMessage
Handler.java:106 android.os.Handler.dispatchMessage
Looper.java:214 android.os.Looper.loop
ActivityThread.java:7032 android.app.ActivityThread.main
Method.java:-2 java.lang.reflect.Method.invoke
RuntimeInit.java:493 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run
ZygoteInit.java:964 com.android.internal.os.ZygoteInit.main`

@juusopitkanen Hi,
after I tested the new release the error still appears from time to time.

I believe it is mainly because when I activate the geolocation in the foreground after returning from device lock and I have no notification then, there is a brief window in which the service is activated in the background, the android system punishes the app for using a background service without notification and that what causes the crash.

Unfortunately, I don't know how to resolve this issue other than to enable the foreground option, which I would like to avoid since I activate the location only when the app is in the foreground and therefore there is no need for a notification

@juusopitkanen You need to target Android SDK 28! What version of react-native are you using?

@boaz-lachman can you post your adb logs. If you installed 0.5.6 or newer, there should be different error than Not allowed to start service Intent { } app is background

@mauron85 Ah, okay. My target version is currently at 27. I'll update that! Thank you. :)

@mauron85 I'm working with version 0.6.0

the error shown in bugsnag today is Not allowed to start service Intent { cmp=com.scoutin/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{d9829b0 u0a214 TPSL bg:+22m53s544ms idle procs:1 proclist:32503, seq(0,0,0)}

unfortunately I don't have the full adb log

java.lang.IllegalStateException Not allowed to start service Intent { cmp=com.scoutin/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{d9829b0 u0a214 TPSL bg:+22m53s544ms idle procs:1 proclist:32503, seq(0,0,0)}
ContextImpl.java:1666 android.app.ContextImpl.startServiceCommon
ContextImpl.java:1611 android.app.ContextImpl.startService
ContextWrapper.java:677 android.content.ContextWrapper.startService
LocationServiceProxy.java:114 com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand
LocationServiceProxy.java:75 com.marianhello.bgloc.service.LocationServiceProxy.stop
BackgroundGeolocationFacade.java:447 com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService
BackgroundGeolocationFacade.java:245 com.marianhello.bgloc.BackgroundGeolocationFacade.stop
BackgroundGeolocationModule.java:142 com.marianhello.bgloc.react.BackgroundGeolocationModule.stop
Method.java:-2 java.lang.reflect.Method.invoke
JavaMethodWrapper.java:372 com.facebook.react.bridge.JavaMethodWrapper.invoke
JavaModuleWrapper.java:158 com.facebook.react.bridge.JavaModuleWrapper.invoke
NativeRunnable.java:-2 com.facebook.react.bridge.queue.NativeRunnable.run
Handler.java:873 android.os.Handler.handleCallback
Handler.java:99 android.os.Handler.dispatchMessage
MessageQueueThreadHandler.java:29 com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
Looper.java:214 android.os.Looper.loop
MessageQueueThreadImpl.java:232 com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
Thread.java:764 java.lang.Thread.run

ContextImpl.java:1666android.app.ContextImpl.startServiceCommon
ContextImpl.java:1611android.app.ContextImpl.startService
ContextWrapper.java:677android.content.ContextWrapper.startService
LocationServiceProxy.java:114com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand
LocationServiceProxy.java:75com.marianhello.bgloc.service.LocationServiceProxy.stop
BackgroundGeolocationFacade.java:447com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService
BackgroundGeolocationFacade.java:245com.marianhello.bgloc.BackgroundGeolocationFacade.stop
BackgroundGeolocationModule.java:142com.marianhello.bgloc.react.BackgroundGeolocationModule.stop
Method.java:-2java.lang.reflect.Method.invoke
JavaMethodWrapper.java:372com.facebook.react.bridge.JavaMethodWrapper.invoke
JavaModuleWrapper.java:158com.facebook.react.bridge.JavaModuleWrapper.invoke
NativeRunnable.java:-2com.facebook.react.bridge.queue.NativeRunnable.run
Handler.java:873android.os.Handler.handleCallback
Handler.java:99android.os.Handler.dispatchMessage
MessageQueueThreadHandler.java:29com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
Looper.java:214android.os.Looper.loop
MessageQueueThreadImpl.java:232com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
Thread.java:764java.lang.Thread.run
Thread 2路main
Binder.java:-2android.os.BinderProxy.transactNative
Binder.java:1143android.os.BinderProxy.transact
IActivityManager.java:3711android.app.IActivityManager$Stub$Proxy.unregisterReceiver
ContextImpl.java:1586android.app.ContextImpl.unregisterReceiver
ContextWrapper.java:672android.content.ContextWrapper.unregisterReceiver
ContextWrapper.java:672android.content.ContextWrapper.unregisterReceiver
NetInfoModule.java:133com.facebook.react.modules.netinfo.NetInfoModule.unregisterReceiver
NetInfoModule.java:88com.facebook.react.modules.netinfo.NetInfoModule.onHostPause
ReactContext.java:221com.facebook.react.bridge.ReactContext.onHostPause
ReactInstanceManager.java:673com.facebook.react.ReactInstanceManager.moveToBeforeResumeLifecycleState
ReactInstanceManager.java:497com.facebook.react.ReactInstanceManager.onHostPause
ReactInstanceManager.java:516com.facebook.react.ReactInstanceManager.onHostPause
ReactActivityDelegate.java:94com.facebook.react.ReactActivityDelegate.onPause
ReactActivity.java:58com.facebook.react.ReactActivity.onPause
Activity.java:7609android.app.Activity.performPause
Instrumentation.java:1465android.app.Instrumentation.callActivityOnPause
ActivityThread.java:4251android.app.ActivityThread.performPauseActivityIfNeeded
ActivityThread.java:4216android.app.ActivityThread.performPauseActivity
ActivityThread.java:4168android.app.ActivityThread.handlePauseActivity
PauseActivityItem.java:45android.app.servertransaction.PauseActivityItem.execute
TransactionExecutor.java:145android.app.servertransaction.TransactionExecutor.executeLifecycleState
TransactionExecutor.java:70android.app.servertransaction.TransactionExecutor.execute
ActivityThread.java:1948android.app.ActivityThread$H.handleMessage
Handler.java:106android.os.Handler.dispatchMessage
Looper.java:214android.os.Looper.loop
ActivityThread.java:7050android.app.ActivityThread.main
Method.java:-2java.lang.reflect.Method.invoke
RuntimeInit.java:493com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run
ZygoteInit.java:965com.android.internal.os.ZygoteInit.main

@boaz-lachman so same advice. Target against api 28 and up.

EDIT. API 28 will be default target in next minor release of 0.6.x.

@mauron85 the app is targeted to api 28:

buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
repositories {
google()
jcenter()
maven {
url 'https://maven.google.com/'
name 'Google'
}
}

Hmm, can you try to add <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> to your Application manifest?

@mauron85
also already added










Screen Shot 2019-09-10 at 15 35 39

but I don't use notification:

startForeground: false

Ok. Just uploaded 0.6.2. Try that one.

@mauron85 thank you,

I will try and keep you posted

@mauron85
could it be a result of a conflict with https://github.com/vikeri/react-native-background-job?

@mauron85
Hi,
checked for several days and after update, this issue still persists.

Please reopen this issue

@mauron85 @boaz-lachman Yeah, still persists here too with the new version & all changes.

Guys, considering your bugs reports coming from bugsnag and co., are you sure that all your clients have latest versions installed on their devices?

@mauron85 Yeah, it shows the version of the app with the crash report!

@mauron85 I see it from the Google Play Console, it shows that the apk is targeting SDK 28.

Ok, reopening then. But I'm afraid I cannot help here.

Reading @boaz-lachman crash log. It seem to crash on calling stop. ~Again not sure why, because if you want to call stop from react app, app must be already in foreground.~

One thing we can try, is to change way how service is stopped. Please check branch https://github.com/mauron85/background-geolocation-android/compare/issue%23356

@mauron85 I think all of the crash reports for us are appearing when users are terminating the app / clearing the recent apps. But yeah I'll check that, thanks!

Maybe post your logs too. Checking @boaz-lachman logs I see following call chain (trimmed to bare minimum):

2. LocationServiceProxy.stop
1. ReactInstanceManager.onHostPause (called by rn itself)

Which means @boaz-lachman calls stop method after app is transitioned to the background.

After the changes in the branch, the app crashes with 'Attempt to invoke virtual method 'int android.os.Bundle.getInt(java.lang.String)' on a null object reference' when stopping.

java.lang.NullPointerException Attempt to invoke virtual method 'int android.os.Bundle.getInt(java.lang.String)' on a null object reference
BackgroundGeolocationFacade.java:100 com.marianhello.bgloc.BackgroundGeolocationFacade$2.onReceive
LocalBroadcastManager.java:313 androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts
LocalBroadcastManager.java:121 androidx.localbroadcastmanager.content.LocalBroadcastManager$1.handleMessage
Handler.java:106 android.os.Handler.dispatchMessage
Looper.java:193 android.os.Looper.loop
ActivityThread.java:7029 android.app.ActivityThread.main
Method.java:-2 java.lang.reflect.Method.invoke
RuntimeInit.java:537 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run
ZygoteInit.java:858 com.android.internal.os.ZygoteInit.main

@mauron85 And here in these logs that I'm getting the crash happens on onDestroy().

Caused by: java.lang.IllegalStateException Not allowed to start service Intent { cmp=myapp/com.marianhello.bgloc.service.LocationServiceImpl (has extras) }: app is in background uid UidRecord{57040ac u0a775 CEM bg:+2m18s323ms idle procs:1 proclist:11016, seq(0,0,0)}
ContextImpl.java:1666 android.app.ContextImpl.startServiceCommon
ContextImpl.java:1611 android.app.ContextImpl.startService
ContextWrapper.java:677 android.content.ContextWrapper.startService
LocationServiceProxy.java:126 com.marianhello.bgloc.service.LocationServiceProxy.executeIntentCommand
LocationServiceProxy.java:87 com.marianhello.bgloc.service.LocationServiceProxy.stop
BackgroundGeolocationFacade.java:448 com.marianhello.bgloc.BackgroundGeolocationFacade.stopBackgroundService
BackgroundGeolocationFacade.java:268 com.marianhello.bgloc.BackgroundGeolocationFacade.destroy
BackgroundGeolocationModule.java:126 com.marianhello.bgloc.react.BackgroundGeolocationModule.onHostDestroy
ReactContext.java:252 com.facebook.react.bridge.ReactContext.onHostDestroy
ReactInstanceManager.java:688 com.facebook.react.ReactInstanceManager.moveToBeforeCreateLifecycleState
ReactInstanceManager.java:597 com.facebook.react.ReactInstanceManager.onHostDestroy
ReactInstanceManager.java:611 com.facebook.react.ReactInstanceManager.onHostDestroy
ReactActivityDelegate.java:122 com.facebook.react.ReactActivityDelegate.onDestroy
ReactActivity.java:70 com.facebook.react.ReactActivity.onDestroy
Activity.java:7684 android.app.Activity.performDestroy

After the changes in the branch, the app crashes with 'Attempt to invoke virtual method 'int android.os.Bundle.getInt(java.lang.String)' on a null object reference' when stopping.

Yeah, test are failing too. I'll fix it and let you know when ready to test.

@juusopitkanen fyi there is new commit (fix) in issue#356 branch. Please try.

@mauron85 Now it's not crashing when stopping. :) I'll upload a new production version with this fix and follow up, thank you!

That's great news. Let's hope it will stay that way. Unfortunately I cannot reproduce the crash on my emulators (but going to download the Q one), so I rely completely on your assistance.

I mean I haven't been able to reproduce this manually myself either. I just meant that the crash that appeared with the first fix ('Attempt to invoke virtual method 'int android.os.Bundle.getInt(java.lang.String)' on a null object reference' ) is gone :) But let's hope that the main problem gets solved with this too.

Ah, ok. I thought you can reproduce it yourself. So we have to wait.,

@mauron85 So far looking good, not a single crash report from the new version for a couple of days. I'll get back to this if they start appearing again! Thank you for all your help :)

Seeing this as well in our crashlytics logs - will check if killing app in background causes it.

Hi,
In android, app gets crashed on calling Background.stop().
Anyone please help on this.

@mauron85 Hi,
after upgrading to 0.6.3 the problem does not persist for me

I think it worked

Thank you very much

Also seeing this in Crashlytics logs. Seems to be happening a lot on Samsung phones running Android 9.

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

This issue has been automatically closed, because it has not had recent activity. If you believe this issue shouldn't be closed, please reopen or write down a comment requesting issue reopening with explanation why you think it's important. Thank you for your contributions.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

vendramini picture vendramini  路  3Comments

MRolandd picture MRolandd  路  6Comments

sefatunckanat picture sefatunckanat  路  7Comments

pewh picture pewh  路  6Comments

theebi picture theebi  路  4Comments