Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌位置API-当应用程序位于后台时,在片段中获取位置更新_Java_Android_Android Fragments_Android Gps_Google Location Services - Fatal编程技术网

Java 谷歌位置API-当应用程序位于后台时,在片段中获取位置更新

Java 谷歌位置API-当应用程序位于后台时,在片段中获取位置更新,java,android,android-fragments,android-gps,google-location-services,Java,Android,Android Fragments,Android Gps,Google Location Services,我想在android应用程序中实现GPS跟踪。 为此,我有一个mainActivity,可以在不同的片段之间切换。其中一个是HomeFragment,它扩展了android.app.Fragment,并包含MapView和“GoogleAppClient” 我请求使用以下代码更新位置: mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(LocationHelper.LOCATION_CHECK_I

我想在android应用程序中实现GPS跟踪。 为此,我有一个
mainActivity
,可以在不同的
片段之间切换。其中一个是
HomeFragment
,它扩展了
android.app.Fragment
,并包含
MapView
和“GoogleAppClient”

我请求使用以下代码更新位置:

mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(LocationHelper.LOCATION_CHECK_INTERVAL_MILLI);
    mLocationRequest.setFastestInterval(LocationHelper.FASTEST_LOCATION_CHECK_INTERVAL_MILLI);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
            .addLocationRequest(mLocationRequest);

    LocationServices.FusedLocationApi.requestLocationUpdates(mApiClient, mLocationRequest, this);
因此,如果应用程序在前台运行,我会按照自己的意愿获得位置更新。但是如果应用程序在后台,我就不会再得到任何更新。我了解到,您必须明确地告诉API通过删除例如onPause()-方法中的then来暂停位置更新,但我没有这样做,因此希望它们能够这样做

我还尝试为此实现一个服务,但后来读到位置已经在服务中获取。 此外,由于片段/活动生命周期的原因,我甚至无法想象这是可行的

亲切问候,,
Force0234

位置是通过服务获取的,当然,但是你的应用程序需要一个服务本身来在长时间运行的过程中收听其他服务是的,这是有道理的……正如我所说,我也想到了这一点,但是为什么谷歌要使用活动来获取位置更新呢?因为它们确实如此,而且如果应用程序在后台模式下运行,它们甚至声称会获得更新……当然,您可以附加一个侦听器来获取活动或片段来更新UI。你还需要一个活动或其他上下文来注册后台服务位置是在服务上获取的,当然,但是你的应用程序本身需要一个服务来在长时间运行的过程中侦听其他服务是的,这是有道理的…正如我所说,我也想到了这一点,但是为什么谷歌要使用活动来获取位置更新呢?因为它们确实如此,而且如果应用程序在后台模式下运行,它们甚至声称会获得更新……当然,您可以附加一个侦听器来获取活动或片段来更新UI。您还需要一个活动或其他上下文来注册后台服务