Android 如果应用程序未运行,则在位置更改时执行代码

Android 如果应用程序未运行,则在位置更改时执行代码,android,locationmanager,location-provider,Android,Locationmanager,Location Provider,我正在编写一个小的android应用程序,当设备改变位置时需要执行一些代码。 我想知道,即使应用程序没有运行(不是后台而是停止),是否可以在位置更改时执行代码。 我的意思是,当lat/lng发生变化时,是否有一些系统服务“唤醒”(或启动)我的应用程序(或我的应用程序的特定活动) 到目前为止,我已经创建了一个位置管理器,设置了一些标准,一个提供者,并设置了请求位置更新。这是可行的,但是如果应用程序没有运行,我没有得到更新。您需要创建一个服务,该服务将收到更新通知。即使应用程序未运行,服务也会在“后

我正在编写一个小的android应用程序,当设备改变位置时需要执行一些代码。 我想知道,即使应用程序没有运行(不是后台而是停止),是否可以在位置更改时执行代码。 我的意思是,当lat/lng发生变化时,是否有一些系统服务“唤醒”(或启动)我的应用程序(或我的应用程序的特定活动)


到目前为止,我已经创建了一个位置管理器,设置了一些标准,一个提供者,并设置了请求位置更新。这是可行的,但是如果应用程序没有运行,我没有得到更新。

您需要创建一个
服务,该服务将收到更新通知。即使应用程序未运行,服务也会在“后台”运行

这可能会变得复杂,因为当用户在你的应用程序中时,如果你希望应用程序更新,那么活动将需要
绑定到服务

以下是一个教程:

官方文件也很好:

小心-当内存不足时,Android可能会关闭服务。用户还可以“强制停止”你的应用程序。不要假设它总是在运行,但可以假设它大部分时间都在运行

并注意服务生命周期-它不同于和活动:


嗨,吉姆,谢谢你的回答!所以基本上我需要创建一个实例化locationManager的服务。服务上运行的位置管理器将通过“RequestLocationUpdate”和locationListener侦听位置更改。是吗?是的,听起来完全正确。但是请记住,Android可以随时终止该服务,这就是为什么您需要在该服务中管理locationManager,正如您所说的!并侦听服务中的更新,而不是活动中的更新-但如果您希望显示“实时”更新,则必须从活动中绑定到服务。