gpt4 book ai didi

android - 多个 LocationClients 干扰?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:40 26 4
gpt4 key购买 nike

我正在开发一个包含服务和 Activity 的应用程序。该服务使用 LocationClient 对象每分钟请求当前位置。该 Activity 使用另一个 LocationClient 对象在单击按钮后请求单个当前位置

在服务中:

mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(60000);
mLocationRequest.setFastestInterval(60000);
mLocationClient = new LocationClient(this, this, this);
// ... when connected:
mLocationClient.requestLocationUpdates(mLocationRequest, this);

在 Activity 中:

mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(0); // 0 should be ok since only a single location is requested
mLocationRequest.setFastestInterval(0);
mLocationRequest.setNumUpdates(1); // get only a single location
mLocationClient = new LocationClient(this, this, this);
// ... when connected:
mLocationClient.requestLocationUpdates(mLocationRequest, this);

该服务本身按预期工作。

但是,如果服务已启动并且 Activity 尝试获取单个当前位置,则它会在服务收到更新的位置之前收到该位置。因此该 Activity 最多需要等待 60 秒。

但如果服务未启动并且 Activity 尝试获取单个当前位置,则它会在短时间后收到该位置(通常 < 5 秒)。

是什么导致了这个问题?每个应用程序只允许一个 LocationListener 吗?

最佳答案

首先 - 如果您需要即时位置,请不要请求位置更新,只需在您的位置客户端上调用 getLastLocation() 即可。如果 LocationClient 有一个可用的,这将为您提供最佳/最新的位置结果。如果没有,那么我会请求更新。

其次 - 我认为您可以在单个应用程序中拥有多少位置客户端没有限制,但是,我认为您错过了这些客户端如何与 Google Play 服务交互以接收更新。看着 docs提供了一些见解。

如果您向下滚动到有关指定更新参数的部分,您会看到 LocationClient 有点介于您和您寻找的位置数据之间。手机上实现 LocationClient 的所有其他应用程序都试图访问相同的数据。 LocationClient 尝试在您要求的时间间隔内填写您的请求。但是,由于使用 LocationClient 的其他应用可能正在尝试访问相同的数据,因此无法保证时间。最好的例子是 setFastestInterval():

Calling LocationRequest.setFastestInterval() also helps to save power. When you request a preferred update rate by calling LocationRequest.setInterval(), and a maximum rate by calling LocationRequest.setFastestInterval(), then your app gets the same update rate as the fastest rate in the system. If other apps have requested a faster rate, you get the benefit of a faster rate. If no other apps have a faster rate request outstanding, your app receives updates at the rate you specified with LocationRequest.setInterval().

您收到更新的时间与您请求更新的时间没有直接关联。有时会早一些,有时会晚一些。间隔只是一种偏好。

关于android - 多个 LocationClients 干扰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21316947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com