设置
我在活动中有一个textview。这实际上是一个通知计数视图。单击此按钮将打开一个对话框,其中包含包含通知的列表视图。现在无论我在哪个活动中,我都可以收到通知。 textview存在于主要活动的主片段中。应用程序中有许多这样的片段和各种活动。
数据来自哪里
有一项服务从Web服务下载,一些数据并将其放入全局数组列表Constants.arraylist
。通知计数存储在另一个全局变量Constants.notifcount
中。此服务可以随时运行。现在我需要使用更新的数据更新上述设置中的textview和listview,无论我在后台服务运行完成后的哪个活动。由于各种业务逻辑原因,我无法将服务绑定到主要活动
因此,textview应将自己更新为最新的Constants.notifcount
,并且列表视图应更新为最新的Constants.arraylist
注 - >我知道全局变量是糟糕的设计,一旦我完成这个POC,我就会想出更好的方法。
问题
是否可能
1。)在变量上创建一个监听器,这样无论我在哪里,这两个数据字段都可以在服务后立即更新 运行。
2。)有更好的方法吗?或者更好的是,创建像这样的运行时通知程序的行业最佳实践是什么? (数据集可观察到的?Loopers?)
答案 0 :(得分:1)
无论您的文本视图是什么,请注册广播接收器。当通知计数发生变化时,通过接收器广播它并更新您的textview。您甚至可以将textview子类化,添加一个运行时广播接收器(即,在onAttachedToWindow上注册它并在onDetachedFromWindow上注销它)。然后,无论textview在哪里,每当服务运行时,它都能够通知textview。