【发布时间】:2011-06-16 03:17:58
【问题描述】:
我需要创建一个 Activity 来启动一个服务来监控用户的位置,并且在某个区域内允许调用 Activity 更新其视图以通知用户。
由于有几种不同的方法可以使用服务,我有点困惑,哪一种最适合我的情况。
使用startService() 和stopService() 方法:据我了解,我无法直接与开始活动对话。在谷歌文档中有一个example 显示如何通过 PendingIntent 将 BroadcastReceiver 传递给服务并调用它,但我认为这不允许我更新正在运行的活动的视图......或者会吗?
绑定服务:从文档看来,这将允许服务和活动之间的双向通信,但也提到绑定服务不在后台运行 @987654322 @。现在我不需要,甚至不希望服务无限期地运行,但在最坏的情况下,我可能需要它在 bg 中运行至少一两个小时而不会被杀死。
第三个(可能不是那么好)选项:在 Activity 中的一个线程中运行定位服务,这将使实时视图更新变得容易,然后在 onPause 事件中,停止定位服务在活动中并通过startService() 将其交给服务,并使用通知服务在进入定义的区域时提醒用户。
任何建议将不胜感激。
【问题讨论】:
-
听起来你可能想试试Bound Service using a Messenger