2011-01-21 111 views
0

我已经从android清单中声明了一个后台服务,这个服务将从应用程序的主Activity中启动,并在无限循环中运行以执行位置更新到外部服务器。Android后台服务问题

此后台服务运行在与应用程序的主要活动(在服务的清单声明中使用android:process标记)的进程不同的进程中。我遇到的问题是,当从服务中请求GPS位置更新时,即使使用DDMS/geo命令发送模拟位置,LocationListener的onLocationChanged()方法也不会被调用。但另一方面,从应用程序的主要活动请求GPS位置更新确实有效,并且在收到修复程序时正在调用onLocationChanged()方法,所以我想知道需要修改哪些内容才能获得来自服务内部而不是活动的相同行为。

在此先感谢您的帮助; 哈斯。

+0

向我们展示您如何请求更新。 – 2011-01-21 18:44:03

回答

3

此服务将从应用程序的主Activity中启动,并在无限循环中运行以执行位置更新至外部服务器。

请不要这样做,因为你浪费了记忆。请使用AlarmManager定期触发自行停止Service(如IntentService)。而且,由于您似乎在获取位置信息,请考虑使用我的LocationPoller服务。

此后台服务运行在与应用程序的主要活动(在服务的清单声明中使用android:process标记)的进程不同的进程中。

请不要这样做。你浪费内存并且不增加任何价值。它也可能会导致你的问题。

所以我想知道需要修改什么才能从服务而不是活动中获得相同的行为。

在服务中获取位置工作得很好。请参阅LocationPoller以获取正在使用的示例。

+0

感谢您的LocationPoller解决方案。 – 2012-11-25 11:19:59