react-native-geolocation icon indicating copy to clipboard operation
react-native-geolocation copied to clipboard

Excessive number of pending callbacks: 501. Some pending callbacks that might have leaked by never being called from native

Open FaizanAventior opened this issue 1 year ago • 0 comments

Environment

"react-native": "0.73.9", "@react-native-community/geolocation": "^3.4.0", "react": "18.2.0", "react-native-background-actions": "^4.0.1",

const updateLocation = async () => { // webSocketService.connect(); const deviceId = await getAndroidId(); const gpsInterval = store.getState().appInfo.appInfoRelatedState.interval; console.log(gpsInterval, 'gps');

while (BackgroundService.isRunning()) { try { webSocketService.connect(); // webSocketService.connect(); // webSocketService.flushGPSDataBuffer(); const unixTimestamp = Date.now(); // const latestGPSData = webSocketService.dequeueGPSData(); let latestGPSData: AppInfoNS.GPSData = { dev_id: deviceId, latitude: 0, longitude: 0, timestamp: unixTimestamp, };

  Geolocation.getCurrentPosition(
    position => {
      latestGPSData.latitude = position.coords.latitude;
      latestGPSData.longitude = position.coords.longitude;
      if (
        typeof latestGPSData.latitude == 'number' &&
        typeof latestGPSData.longitude == 'number' &&
        !isNaN(latestGPSData.latitude) &&
        !isNaN(latestGPSData.longitude) &&
        latestGPSData.latitude != 0 &&
        latestGPSData.longitude != 0
      ) {
        console.log('latestGPSData object', latestGPSData);
       sending data to server 
      } else {
        console.warn('Invalid or no GPS data to process.');
      }
    },
    error => {
      console.log(`Geolocation error: ${error.message}`);
    },
    {
      enableHighAccuracy: true,
      timeout: 30000,
      maximumAge: 15000,
    },
  );
} catch (error) {
  console.error('Error fetching interval from Remote Config:', error);
}
// Default to 60 seconds if Remote Config is invalid

console.log(`Next GPS data fetch scheduled after ${gpsInterval}ms.`);
await new Promise(resolve => setTimeout(resolve, gpsInterval));

} }; Geolocation.setRNConfiguration({ skipPermissionRequests: true, enableBackgroundLocationUpdates: false, authorizationLevel: 'whenInUse', locationProvider: 'android', });

React.useEffect(() => { const startGPSBackgroundService = async () => { const hasPermission = await PermissionsAndroid.check( PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION, ); if (hasPermission) { const hasDayBegin = homeState.beginReading; if (hasDayBegin && !homeState.endReading) { const startBackgroundService = async () => { if (!BackgroundService.isRunning()) { await BackgroundService.start(updateLocation, optionsDetails); console.log('Background service started'); } }; startBackgroundService(); // Call it once } { if (BackgroundService.isRunning() && homeState.endReading) { await BackgroundService.stop(); console.log('background stop'); } } } }; startGPSBackgroundService(); }, [homeState.beginReading, homeState.endReading]);

Platforms

This Issue i was able to see on Andorid Side as our App is only for Android User

Versions

  • Android:
  • iOS:
  • react-native-geolocation:
  • react-native:
  • react:

Description

Excessive number of pending callbacks: 501. Some pending callbacks that might have leaked by never being called from native code: {"4347":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4348":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4349":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4352":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4353":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4354":{},"4355":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4358":{"module":"RNCGeolocation","method":"getCurrentPosition"},"4359":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5090":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5096":{"module":"ReactNativePushNotification","method":"createChannel"},"5259":{},"5260":{},"5261":{},"5262":{},"5263":{},"5264":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5265":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5266":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5267":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5268":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5269":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5270":{"module":"RNBackgroundActions","method":"start"},"5271":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5272":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5273":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5274":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5275":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5276":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5277":{"module":"PermissionsAndroid","method":"requestPermission"},"5278":{},"5279":{},"5280":{},"5281":{},"5282":{},"5283":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5284":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5285":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5286":{"module":"PermissionsAndroid","method":"requestPermission"},"5287":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5288":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5289":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5290":{},"5291":{},"5292":{"module":"PermissionsAndroid","method":"requestPermission"},"5293":{"module":"RNCGeolocation","method":"getCurrentPosition"},"5294":{"module":"PermissionsAndroid","method":"requestPermission"},"5295":{"module":"PermissionsAndroid","method":"requestPermission"},"5310":{"module":"PermissionsAndroid","method":"shouldShowRequestPermissionRationale"},"5311":{"module":"RNCGeolocation","method":"getCurrentPosition"},"...(truncated keys)...":451}

Reproducible Demo

in our app if we open the app and our foregorund service is started so that we can send gps lat long on server end every after 30-40 seconds after satrting the app lets its send lat lon 10 times then keep the app in background for 2 mins then turn of mobile location atleast for 10 mins stop the background service in mobile then open the app then this will appears

FaizanAventior avatar Jan 29 '25 06:01 FaizanAventior