0

我正在编写一个显示“日本传统时间”(简称 JTT)的应用程序。有几个组件(通知、小部件、应用程序本身、警报)都使用相同的数据 - 当前的 JTT。

我当前的版本使用一个服务来完成所有的计算,并使用一个处理程序来通知每个人关于“滴答”,模仿ACTION_TIME_TICK

但是,对于警报,我还需要一种将“通常时间”转换为 JTT 的方法,反之亦然。这些计算非常耗费 CPU(这一切都基于日出和日落),因此我更喜欢在一个地方完成所有计算然后缓存(计算知道日出和日落时间的东西并不那么重)。

所以我现在有几种方法可以做到这一点:

  • 保持一切正常
    • 并使用绑定来请求我需要的数据。它实际上已经在一个案例中完成,并且看起来有点麻烦,因为我必须处理异步响应
  • 移至内容提供商
    • 并使用内容观察者而不是广播
    • 或从提供商发送广播
  • 结合两种方式
    • 使用内容提供者计算服务数据,然后在需要时广播它

哪个会更好?也许还有别的?

4

2 回答 2

0

内容提供程序用于结构化数据,因此它并不真正适合您的用例。不确定“异步响应”是什么意思?调用远程服务通常就像本地函数调用一样,它会阻塞并在完成后返回一个值。如果您必须通知多个组件,则可以使用广播。如果所有组件都在同一个进程中,则使用 LocalBroadcast 进行探索(检查 Android 支持库源),或者在其上设置权限以确保如果您需要发送系统范围(常规)的其他应用程序无法获取它。

于 2012-12-13T04:04:00.570 回答
0

我坚持“只是服务”——我发现了粘性广播,它实际上涵盖了我在普通广播中遇到的问题(必须在注册后但在获得第一个“滴答声”之前从服务中请求最新数据),这给我留下了很多我需要实际服务连接的情况较少。

于 2012-12-14T22:38:01.970 回答