在后台将用户位置更新发送到服务器的最佳方式(Android)

Posted

技术标签:

【中文标题】在后台将用户位置更新发送到服务器的最佳方式(Android)【英文标题】:Best way to send user location updates to the server in the background(Android) 【发布时间】:2015-06-02 07:46:20 【问题描述】:

我的应用需要经常向用户发送位置更新,即使他不使用该应用也是如此。因此,我创建了一个返回 start_sticky 的服务,并且我正在使用 Google 位置服务发送此处指定的数据 android location updates。我的服务正在实现 ConnectionCallbacks、OnConnectionFailedListener、LocationListener 因此,每当调用 onLocationChanged(Location location) 时,我都会将位置发送到服务器。我想知道这样做是否会导致更快的电池消耗。如果是这样,更好的方法是什么。在问这个问题时,*** 给了我一个警告,说这个问题似乎是主观的,并且可能已关闭。但我想不出另一种方法来问这个问题。希望有人可以帮助我。在此先感谢

【问题讨论】:

【参考方案1】:

我可以想到两种方法:

1- 我假设当用户的位置发生变化时,应用程序会向服务器发送 lat 和 lng。因此,您可以保存 lat 和 lng 的更改,并在每收集 20 个 lat/lng 后将一组更改发送到服务器。

2- 您可以检查位置更新的 lat/lng 是否与之前的有很大差异,因此您可以确定将数据发送到服务器的速率。例如,如果 lat/lng 大致相同,则降低 onLocationChange 侦听器速率(例如用户在家)。而当变化很大时,再增加位置监听率(例如用户正在开车)。

但是,这一切都取决于位置数据的用途。希望这可以帮助!

【讨论】:

谢谢 ziad 我认为第一种方法对我不起作用。我会尝试实现你的第二种方法并让你知道

以上是关于在后台将用户位置更新发送到服务器的最佳方式(Android)的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS (Swift) 中使用后台位置更新的最佳方式 [关闭]

在后台向服务器发送位置更新

应用程序被杀死时,如何每 10 秒将用户位置上传到服务器? [关闭]

将手机位置从移动应用程序发送到服务器的最佳方式是啥?

如何在后台模式下获取当前位置并在后台模式下继续将该位置发送到服务器

我想每 1 分钟将我的位置发送到服务器,即使是 android 后台的应用程序?