Strava, y cualquier otra app de Android (ni idea con IOS), está a merced de lo que decida el sistema operativo para obtener la ubicación.
Y Android hace "cosas" para obtener tu ubicación. Cosas que no siempre incluyen consultar al GPS, sino estimar, o directamente no dar información durante períodos, como forma de ahorrar batería. Esto, aun cuando la app solicite específicamente la máxima precisión. O sea, la máxima precisión de Android no siempre viene de un GPS. O sea, perfectamente puede ser verdura. Y regularmente lo es
developer.android.com
- PRIORITY_HIGH_ACCURACY - Use this setting to request the most precise location possible. With this setting, the location services are more likely to use GPS to determine the location.
ahí queda bastante en evidencia... ni siquiera lo pusieron en letra chica.
Y pa'pior, cuando consultás, el servicio ni siquiera tiene la obligación de devolverte la posición en el tiempo que vos querés...
The priority of PRIORITY_HIGH_ACCURACY, combined with the ACCESS_FINE_LOCATION permission setting that you've defined in the app manifest, and a fast update interval of 5000 milliseconds (5 seconds), causes the fused location provider to return location updates that are accurate to within a few feet. This approach is appropriate for mapping apps that display the location in real time.
Podés bajar ese tiempo de 5 segundos a 1, pero ya ves que la idea no es competir contra un equipo que puede estar registrando una vez por segundo (aunque normalmente los Garmin usa un modo "smart" que usa un período dinámico mayor de 1 s, pero no mucho... creo que pasa a 2 o 3 máximo).
En Android el foco en los servicios de localización está en el ahorro de energía, no en la precisión. Te dan el servicio y te lo pintan como si fuera un GPS, pero si realmente querés *en todo momento* la precisión de un GPS, te tenés que comprar uno.