Android:定期UI更新和通信服务<>活动



所以我要做的只是每隔一段时间更新一次活动的视图,比如每秒一次。在这种特定情况下,只有几个按钮,我想更改的只是它们的文本。我在这里读过很多解决相同问题的问题,但我似乎比其他人卡住了一点,我要归咎于我对 Android 的有限体验(这实际上意味着,我不理解提出的解决方案,或者无法识别示例代码中的核心思想, 这实际上是我第一次尝试为 Android 编程)。

由于我希望服务拥有数据(及其创建),因此我想到了对该活动的回调,这就是我在过去几个小时中一直在尝试的。我所拥有的是onCreate()onStartCommand()onDestroy()的服务,基本上,这很好。我在 android 清单文件中注册了它,并成功地让它栩栩如生(我正在记录生命周期方法)。

但是我该怎么去

  • 使用服务中的数据频繁更新视图

  • 为服务提供它所依赖的某些信息(例如通知它按钮事件)

感谢您的帮助!

从官方 Android 文档中阅读有关绑定到服务的信息。

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

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

要按时间间隔刷新活动的视图,请使用计时器任务和计时器。如果你通过谷歌研究它们,这些都是不言自明的。

为了从service更新您的activity,您必须在activityregister一个BroadcastReceiver。在进行更新的receiver中,在服务中,您必须sendBroadcast您的活动。activityservice之间的信息,您可以通过sendBroadcast发送的Intent发送。

实际上有一种非常简单的方法可以使用Timerandroid.os.Handler从自身内部更新活动。这个想法是给活动一个接口(例如 IUpdateable ),以公开更新方法。然后扩展TimerTask,将(Handler, IUpdateable)作为参数并保留对它的引用。在TimerTaskrun()方法中,调用例如 updateableActivity.update() .在活动中,实例化Timer并计划new UpdateTask(new Handler(), this);
这样你就有一个实际可重用的方法(使用接口可以在任何活动中轻松实现)。如果不清楚,请查看此要点。

最新更新