如果应用不是 运行,则在位置更改时执行代码

Execute code on location changes if app not running

我正在编写一个小型 android 应用程序,需要在设备更改位置时执行一些代码。 我想知道是否可以在位置更改时执行代码,即使应用程序不是 运行(不是后台但已停止)。 我的意思是,当 lat/lng 更改时,是否有某些系统服务 "wake"(或启动)我的应用程序(或我的应用程序的特定 activity)?

到目前为止,我已经创建了一个 locationManager,设置了一些 criteria,一个 provider并设置 requestLocationUpdates。这是有效的,但如果应用程序不是 运行 我没有更新。

您需要创建一个 Service 来通知更新。 "background" 中的服务 运行 即使您的应用不是 运行ning。

这可能会变得复杂,因为当用户在您的应用中时,如果您希望应用更新,那么 activity 将需要 bind 到服务。

这里有教程:

http://www.vogella.com/tutorials/AndroidServices/article.html

官方文档也很好:

http://developer.android.com/reference/android/app/Service.html

注意 - 当内存 运行 不足时,服务可以被 Android 关闭。用户还可以 "force stop" 您的应用。不要假设它总是 运行ning,但你可以假设它大部分时间都是 运行s。

并注意服务生命周期 - 它不同于 Activity:

http://developer.android.com/guide/components/services.html#Lifecycle