【问题标题】:want to make the service independently run想让服务独立运行
【发布时间】:2014-09-19 09:47:26
【问题描述】:

所以基本上我想要做的是我想要一个在后台运行并将 LatLong 更新到服务器的服务。无论应用程序是否正在运行,此操作都需要始终进行。 现在,当应用程序启动时,我希望服务计算 latlong 之间的距离并更新 UI,以及它已经在做的工作,即将 latlong 更新到服务器。我希望该服务为多项活动做额外的工作。假设我启动应用程序并且我在 Activity A 上,单击 Activity A 上的按钮时,服务开始更新 UI,当我们单击增益时,它停止更新。现在我在 Activity B 上,点击时我希望该服务除了更新 LatLong 和更新 UI 之外还做一些工作。 实现这一目标的最佳方法是什么??

编辑 我面临的问题是没有让服务更新 UI,而是让活动在它已经启动时与服务通信。 我可以在启动服务时传递一些数据,但是当它已经启动时如何与服务通信。如何告诉服务看到您已经在运行并正在执行一些操作,现在您必须在之前的操作之上执行更多操作。

我可以在服务中创建一些静态方法,并在我需要执行额外操作但我不想这样做时调用它们.. 我想要更好的方法。

【问题讨论】:

标签: android android-activity service broadcastreceiver android-service


【解决方案1】:

这里基本上是服务在与 ui 相同的主线程进程上运行。当你想让它连续运行时,你已经在你的胎面运行它。通过这种方式,您可以避免服务在应用程序进入后台或被杀死时停止。 (请查看 Service.START_STICKY 标志,我猜这就是您所需要的)。

还有更多关于活动的第二个问题是使用正在收集的服务信息或数据进行更新,您需要查看“如何绑定服务”。 (在活动检查服务连接和绑定到活动中,Unbindibg 也有查看它)。 Activity 具有实现活页夹所需的所有回调。

编辑

更新 ui 的服务必须具有发送和接收意图机制。您可以从服务中广播和意图检查您的活动是否正在运行。如果正在运行广播意图并且有接收器在活动中收听它。

你也可以通过接口机制来做到这一点

【讨论】:

  • 看看我编辑的问题。你能再解释一下吗?
  • 服务可以通过intent向activity发送消息,activity可以通过BroadcastIntent监听。但是,当它已经运行时,我如何从活动向服务发送消息?就像我想在服务已经运行时调用改变服务中某些值的方法一样。我怎样才能做到这一点?
  • 从Binder类你可以做到。拥有返回正在运行的服务并调用该方法的方法(公共访问说明符)。 Binder会在服务连接期间给予
  • 好吧让我试试。如果您可以使用一些代码更新您的答案,那将会很有帮助。
猜你喜欢
  • 1970-01-01
  • 2015-11-23
  • 2021-03-13
  • 2016-09-07
  • 2017-09-03
  • 2023-03-17
  • 1970-01-01
  • 2018-03-30
  • 2016-02-04
相关资源
最近更新 更多