Android 服务(位置侦听器)更新 activity
Android service (location listener) to update activity
我有一个 activity 显示带有标记的地图。我还有一个位置侦听器,其值将更新 activity arraylist 并根据更新的 arraylist 值重新绘制标记。
我希望它总是 运行(即使 activity 放在后台)。我知道 Activity 可能会被杀死,所以我希望我需要为位置监听器提供服务。现在我的问题是:当服务实际上是获取信息时,如何更新 activity arraylist 并重绘内容?
我阅读了一些关于 boundservice 的内容,也许我需要它?但是,即使 activity 被杀死,我也需要 运行ning 服务。
或者我是否只创建服务然后向 activity 发送广播?
谢谢
就像您在 post 末尾写的那样,您可以为此使用 BroadcastReceiver
。这就是我使用它的方式。
在您的 Activity
的 onCreate(...)
中,在本地注册:
LocalBroadcastManager.getInstance(this).registerReceiver(...);
在接收器的 onReceive(...)
方法中,更新所需数据并在 Activity 的 onDestroy()
方法中取消注册,再次使用 LocalBroadcastManager
对象。
不用说,您从 Service
的 onLocationChanged(...)
方法发送广播信号,因为它与您的 Activity 在同一个包中,LocalBroadcastManager 将转发向您的 Activity.
发送信号
LocalBroadcastManager.getInstance(this).sendBroadcast(...);
我有一个 activity 显示带有标记的地图。我还有一个位置侦听器,其值将更新 activity arraylist 并根据更新的 arraylist 值重新绘制标记。
我希望它总是 运行(即使 activity 放在后台)。我知道 Activity 可能会被杀死,所以我希望我需要为位置监听器提供服务。现在我的问题是:当服务实际上是获取信息时,如何更新 activity arraylist 并重绘内容?
我阅读了一些关于 boundservice 的内容,也许我需要它?但是,即使 activity 被杀死,我也需要 运行ning 服务。
或者我是否只创建服务然后向 activity 发送广播?
谢谢
就像您在 post 末尾写的那样,您可以为此使用 BroadcastReceiver
。这就是我使用它的方式。
在您的 Activity
的 onCreate(...)
中,在本地注册:
LocalBroadcastManager.getInstance(this).registerReceiver(...);
在接收器的 onReceive(...)
方法中,更新所需数据并在 Activity 的 onDestroy()
方法中取消注册,再次使用 LocalBroadcastManager
对象。
不用说,您从 Service
的 onLocationChanged(...)
方法发送广播信号,因为它与您的 Activity 在同一个包中,LocalBroadcastManager 将转发向您的 Activity.
LocalBroadcastManager.getInstance(this).sendBroadcast(...);