【问题标题】:Android and RESTful servicesAndroid 和 RESTful 服务
【发布时间】:2010-06-24 23:34:20
【问题描述】:

在 Google I/O 期间的 Virgil Dobjanschi talk 中,他提到使用 Services 进行提取,然后在完成时使用回调通知 Activity。他从未详细说明如何实现此回调,而且我似乎在任何地方都找不到有关此主题的任何有用信息。

我想他说你根本不需要实现绑定?

有什么线索吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    选项#1:Service 发送一个广播IntentActivity 通过BroadcastReceiver 捕获,该BroadcastReceiver 通过registerReceiver() 注册。

    选项#2:如果Activity 绑定到Service,让Activity 将侦听器传递给Service,当工作完成时Service 会调用该侦听器。

    选项#3:Service 没有多大作用,但是当数据发生变化时,ContentProvider 会调用notifyChange(),这可能会波回到数据上的Activity 和/或其Cursor .

    选项#4:应该避免的单例。

    ...

    选项 #237:Service 通过 FedEx 向Activity 发送一封信。 :-)

    ...

    话虽如此,一旦他们将 Twitter 应用程序作为开源发布,你就会确定 Twitter 应用程序的功能。

    【讨论】:

    • 根据 Rponds 的回答,Google I/O 应用程序将侦听器作为 parceable extra 传递。这是您对选项 #2 的意思还是完全绑定?
    • 不,选项 #2 是完全绑定。选项...嗯...#74 使用的是ResultReceiver。坦率地说,我对这个选择感到震惊,因为ResultReceiver 使用 AIDL,并且由于开销问题,我们一再被告知不要将其用于本地操作。也许ResultReceiver 有一些我不知道的特别之处。
    • 对此的快速跟进:AIDL 不会增加本地访问的开销。他们检测到客户端和服务器在同一个进程中并直接路由。因此,我对ResultReceiver 的担心是没有根据的。有关更多信息,请参阅此主题:groups.google.com/group/android-developers/browse_thread/thread/…
    【解决方案2】:

    查看Google I/O 2010 app. 它使用了他所指的模式。它使用 CommonsWare 答案中的选项 #2。

    【讨论】:

    • 谢谢!从未意识到该应用程序使用了他的方法。他所做的是将侦听器接口作为 parceable 传递,我什至不知道这是可能的。
    【解决方案3】:

    我认为他们正在谈论使用 AIDL 在活动和服务之间进行通信...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 2016-02-18
      • 2012-01-12
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多