Android:常规UI更新&通信服务< - >活动

时间:2012-08-14 22:51:27

标签: android service android-activity updates

所以我要做的就是在间隔内更新活动的视图,例如每秒一次。在这种特殊情况下,一些按钮,我想改变的只是他们的文字。我在这里已经阅读了很多问题来解决同样的问题,但我似乎比其他人更加困难,而且我会责怪我对Android的限制经验(实际上这意味着,我不明白提出的解决方案,或者无法确定示例代码中的核心思想,而这实际上是我第一次尝试为Android编程)。

由于我想要一个服务来拥有数据(及其创建),我想到了对活动的回调,这就是我一直在尝试的东西,让我在过去的几个小时内得到了解决。我所拥有的是onCreate()onStartCommand()onDestroy()的服务,基本上,这很好。我在android清单文件中注册了它,并成功实现了它(我正在记录生命周期方法)。

但我怎么去

  • 使用服务中的数据

  • 频繁更新视图
  • 为服务提供所依赖的某些信息(比如通知按钮事件)

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

从官方Android文档中了解Binding to a Service

它应该回答你所有的问题。

基本上,这个想法是你“绑定”到一个服务,这样做会给你提供服务对象。从那里,您可以直接调用服务的方法。在您的情况下,您可能想要在您的服务中声明一个名为notifyButton1Pressed()或类似的方法。

要在间隔中刷新Activity的视图,请使用TimerTask和Timer。如果你通过谷歌研究它们,这些都是不言自明的。

答案 1 :(得分:0)

要从activity更新service,您必须在registerBroadcastReceiver activity。在receiver进行更新,在服务中,您必须sendBroadcast参与您的活动。 activityservice之间的信息可以通过Intent发送sendBroadcast来发送。

答案 2 :(得分:0)

实际上有一种非常简单的方法可以使用Timerandroid.os.Handler从内部更新活动。我们的想法是为活动提供一个公开更新方法的接口(例如IUpdateable)。然后扩展TimerTask(Handler, IUpdateable)作为参数并保留对它的引用。在TimerTask的{​​{1}}方法中,请致电run()。在活动中,实例化updateableActivity.update()并安排Timer 这样,您就拥有了一种实际可重用的方法(使用界面可以在任何活动中轻松实现)。如果不清楚,请查看此gist