如何在Android中定期从服务更新为活动

时间:2014-03-04 08:32:17

标签: android service

我对Android有一定的经验。我想知道如何在Android中定期从服务更新到活动。我正在玩一个在后台运行定位服务的应用程序并更新到Activity用户旅行的程度。在过去,我从服务广播距离,我在活动中使用广播接收器。但是,这种方法太慢了。

我最近发现我可以绑定服务,或者使用Handler定期更新服务中的活动。但是,我不明白细节特别是汉德勒。任何人都可以解释我如何使用Handler定期从服务更新为活动。当我使用处理程序时,是否需要绑定服务?或者是那些独立的事情。

我想要的是我想通过使用onlocationChange()方法从服务到具有UI的活动来更新用户旅行的数量。

3 个答案:

答案 0 :(得分:1)

我将首先向您解释onLocationChange(Location l)方法的工作原理。

此方法是回调 - 这意味着它将由android系统自动调用。经过一段时间后,它将被称为A)或B)在你的位置改变一定的米之后。创建LocationManager时,您将指定这两个参数。

考虑到这一点,你应该举例说明一个带距离的全局变量,比如说

  

int a = 0;

现在,在此方法中,您必须使用传递的位置l。您必须将移动的距离添加到变量a。现在,如果所有这些代码都在您显示行进距离的活动内,您只需使用变量a,否则您有很多选择。将其放在共享首选项中,或使用将其发送到其他活动的函数。

祝你好运。

答案 1 :(得分:0)

你看看官方的解决方案吗? http://developer.android.com/training/location/receive-location-updates.html

这也是你想要的一个很好的例子 https://github.com/commonsguy/cwac-locpoll

我认为这可以帮助你。

答案 2 :(得分:0)

首先创建一个更新位置的界面

获取持续更新的界面。

public interface ILocationlistener {
 public void updateLocation(Location location);
 public void updateLatitude(Double lat);
 public void updateLongitude(Double lang);
}

更新LocationListener中onLocationChanged(位置位置)的ILocationlistener接口,这样每个位置都会更改,您将获得更新。

使用ILocationListerner interfase更新Activity或Service中的位置更改。获取位置后,使用Handler或UI线程更新主线程中的UI。

例如http://www.androidsourcehelp.com/2014/03/get-location-and-its-changes-in-android.html?m=1