diff --git a/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java b/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java index eaab9e3d06..2abfc7aee5 100644 --- a/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java +++ b/OsmAnd/src-gms/net/osmand/plus/LocationServiceHelperImpl.java @@ -1,6 +1,7 @@ package net.osmand.plus; import android.location.Location; +import android.os.HandlerThread; import android.os.Looper; import androidx.annotation.NonNull; @@ -32,6 +33,8 @@ public class LocationServiceHelperImpl extends LocationServiceHelper { private final OsmandApplication app; + private final HandlerThread mHandlerThread = new HandlerThread("LocationServiceHelperThread"); + // FusedLocationProviderClient - Main class for receiving location updates. private final FusedLocationProviderClient fusedLocationProviderClient; @@ -46,6 +49,7 @@ public class LocationServiceHelperImpl extends LocationServiceHelper { public LocationServiceHelperImpl(@NonNull OsmandApplication app) { this.app = app; + mHandlerThread.start(); fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(app); @@ -100,7 +104,7 @@ public class LocationServiceHelperImpl extends LocationServiceHelper { // request location updates try { fusedLocationProviderClient.requestLocationUpdates( - fusedLocationRequest, fusedLocationCallback, Looper.myLooper()); + fusedLocationRequest, fusedLocationCallback, mHandlerThread.getLooper()); } catch (SecurityException e) { LOG.debug("Location service permission not granted"); throw e;