Open igorgomeslima opened 5 years ago
I'm also experiencing this on Android, so far only on the Samsung S9. For context we listen for location updates throughout most of the app but sometimes we experience this same crash:
GeolocationContinuousListener.OnLocationChanged (Android.Locations.Location location)
ILocationListenerInvoker.n_OnLocationChanged_Landroid_location_Location_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_location)
@igorgomeslima did you ever find a work-around for this? It's a really serious issue for us on Android.
@harry-gordon We not find any work-around about this. This really is very serious. In this case, we stopped using the plugin. Now we using Fused Location Provider.
I've just done a 5hr soak test using lockito as my fake gps provider and have encountered zero issues, yesterday I ran the app live for 2hr 45mins with no issues either.
Code is :
void CrossGeolocator_Current_PositionChanged(object sender, PositionEventArgs e)
{
var position = e.Position;
if (lastRecievedPosition != null)
{
if(e.Position.Latitude==lastRecievedPosition.Latitude && e.Position.Longitude == lastRecievedPosition.Longitude && e.Position.Timestamp == lastRecievedPosition.Timestamp)
{
// Reject it we got a double fire !!!
return;
}
else
{
lastRecievedPosition = new StorePosition(e.Position);
}
}
else
{
lastRecievedPosition = new StorePosition(e.Position);
}
..... etc. etc.
}
and
if (CrossGeolocator.Current.IsListening)
{
return;
}
lastRecievedPosition = null;
lastSentPosition = null;
CrossGeolocator.Current.PositionChanged += CrossGeolocator_Current_PositionChanged;
CrossGeolocator.Current.PositionError += CrossGeolocator_Current_PositionError;
// was 1,1
if (await CrossGeolocator.Current.StartListeningAsync(TimeSpan.FromSeconds(1), 1,
true, new ListenerSettings
{
ActivityType = ActivityType.Fitness,
AllowBackgroundUpdates = true,
DeferLocationUpdates = false,
DeferralDistanceMeters = 500,
DeferralTime = TimeSpan.FromSeconds(60 * 5),
ListenForSignificantChanges = false,
PauseLocationUpdatesAutomatically = false,
}))
{
tracking = true;
}
else
{
tracking = false;
}
Hey @chrisfoulds, thanks for sharing. To put the issue in perspective we've been using the plugin for weeks and have only encountered the issue on one device and only with mock data.
Will continue to gather data and consider submitting a fix 🕵.
Version Number of Plugin: \packages\Xam.Plugin.Geolocator.4.5.0.6\lib\monoandroid71\Plugin.Geolocator.dll Device Tested On: Android Version of VS: VS2017 15.9.13 Version of Xamarin: 4.12.3.83 Xamarin Android SDK: 12.4.0.64 Versions of other things you are using: Mock Locations (fake GPS path)(https://play.google.com/store/apps/details?id=ru.gavrikov.mocklocations&hl=pt_BR)
Steps to reproduce the Behavior
Default configuration: https://jamesmontemagno.github.io/GeolocatorPlugin/
Expected Behavior
Position Changed event called.
Actual Behavior
This happens after a certain amount of time (this is intermittent).
Thread started: #44
Thread started: #45
Thread started: #46
Thread started: #47
07-05 14:37:21.686 D/Mono (12018): DllImport attempting to load: '/system/lib/liblog.so'.
07-05 14:37:21.693 D/Mono (12018): DllImport loaded library '/system/lib/liblog.so'.
07-05 14:37:21.693 D/Mono (12018): DllImport searching in: '/system/lib/liblog.so' ('/system/lib/liblog.so').
07-05 14:37:21.693 D/Mono (12018): Searching for 'android_log_print'.
07-05 14:37:21.694 D/Mono (12018): Probing 'android_log_print'.
07-05 14:37:21.694 D/Mono (12018): Found as 'android_log_print'.
Thread started: #48
Thread started: #49
Thread started: #50
Thread started: #51
Thread started: #52
Thread started: #53
Thread started: #54
07-05 14:37:21.791 I/MonoDroid(12018): UNHANDLED EXCEPTION:
07-05 14:37:21.806 I/MonoDroid(12018): System.NullReferenceException: Object reference not set to an instance of an object.
07-05 14:37:21.806 I/MonoDroid(12018): at **_Plugin.Geolocator.GeolocationContinuousListener.OnLocationChanged (Android.Locations.Location location) [0x0007e] in :0
07-05 14:37:21.806 I/MonoDroid(12018): at Android.Locations.ILocationListenerInvoker.n_OnLocationChanged_Landroid_locationLocation (System.IntPtr jnienv, System.IntPtr native this, System.IntPtr nativelocation) [0x00011] in **:0
07-05 14:37:21.806 I/MonoDroid(12018): at (wrapper dynamic-method) System.Object.27(intptr,intptr,intptr)
Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object.
Thread finished: #54
The thread 0x36 has exited with code 0 (0x0).
Thread finished: #52
The thread 0x34 has exited with code 0 (0x0).
Thread finished: #51
The thread 0x33 has exited with code 0 (0x0).
Thread finished: #47
The thread 0x2f has exited with code 0 (0x0).
Thread finished: #46
The thread 0x2e has exited with code 0 (0x0).
Thread finished: #48
The thread 0x30 has exited with code 0 (0x0).
Thread finished: #50
The thread 0x32 has exited with code 0 (0x0).
Thread finished: #53
The thread 0x35 has exited with code 0 (0x0).
Thread finished: #44
The thread 0x2c has exited with code 0 (0x0).
Thread finished: #45
The thread 0x2d has exited with code 0 (0x0).
07-05 14:38:43.014 E/mono-rt (12018): [ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object.
07-05 14:38:43.014 E/mono-rt (12018): at (wrapper dynamic-method) System.Object.27(intptr,intptr,intptr)
07-05 14:38:43.014 E/mono-rt (12018): at (wrapper native-to-managed) System.Object.27(intptr,intptr,intptr)
Thread started: #55
Thread started: #56
Debugger Connection Lost: Debugger lost connection to the running application. Likely this means the application terminated unexpectedly.
Code snippet