【问题标题】:Execute code on location changes if app not running如果应用程序未运行,则在位置更改时执行代码
【发布时间】:2015-01-13 23:41:04
【问题描述】:

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

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

【问题讨论】:

    标签: android locationmanager location-provider


    【解决方案1】:

    您需要创建一个Service 来通知更新。即使您的应用没有运行,服务也会在“后台”运行。

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

    这是一个教程:

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

    官方文档也不错:

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

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

    并注意Service Lifecycle——它与Activity不同:

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

    【讨论】:

    • 您好吉姆,谢谢您的回答!所以基本上我需要创建一个实例化 locationManager 的服务。在服务上运行的位置管理器将通过“requestLocationUpdates”和 locationListener 监听位置变化。对吗?
    • 是的,这听起来完全正确。但请记住,Android 可以随时终止服务 - 这就是为什么您需要在服务中管理 locationManager,正如您所说的!并监听服务中的更新,而不是活动 - 但如果您希望显示“实时”更新,则必须从活动绑定到服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多