所以我要做的就是在间隔内更新活动的视图,例如每秒一次。在这种特殊情况下,一些按钮,我想改变的只是他们的文字。我在这里已经阅读了很多问题来解决同样的问题,但我似乎比其他人更加困难,而且我会责怪我对Android的限制经验(实际上这意味着,我不明白提出的解决方案,或者无法确定示例代码中的核心思想,而这实际上是我第一次尝试为Android编程)。
由于我想要一个服务来拥有数据(及其创建),我想到了对活动的回调,这就是我一直在尝试的东西,让我在过去的几个小时内得到了解决。我所拥有的是onCreate()
,onStartCommand()
和onDestroy()
的服务,基本上,这很好。我在android清单文件中注册了它,并成功实现了它(我正在记录生命周期方法)。
但我怎么去
使用服务中的数据
为服务提供所依赖的某些信息(比如通知按钮事件)
感谢您的帮助!
答案 0 :(得分:1)
从官方Android文档中了解Binding to a Service。
它应该回答你所有的问题。
基本上,这个想法是你“绑定”到一个服务,这样做会给你提供服务对象。从那里,您可以直接调用服务的方法。在您的情况下,您可能想要在您的服务中声明一个名为notifyButton1Pressed()或类似的方法。
要在间隔中刷新Activity的视图,请使用TimerTask和Timer。如果你通过谷歌研究它们,这些都是不言自明的。
答案 1 :(得分:0)
要从activity
更新service
,您必须在register
中BroadcastReceiver
activity
。在receiver
进行更新,在服务中,您必须sendBroadcast
参与您的活动。 activity
和service
之间的信息可以通过Intent
发送sendBroadcast
来发送。
答案 2 :(得分:0)
实际上有一种非常简单的方法可以使用Timer
和android.os.Handler
从内部更新活动。我们的想法是为活动提供一个公开更新方法的接口(例如IUpdateable
)。然后扩展TimerTask
以(Handler, IUpdateable)
作为参数并保留对它的引用。在TimerTask
的{{1}}方法中,请致电run()
。在活动中,实例化updateableActivity.update()
并安排Timer
这样,您就拥有了一种实际可重用的方法(使用界面可以在任何活动中轻松实现)。如果不清楚,请查看此gist。