API RemoteService混淆

时间:2010-08-31 16:47:29

标签: android service callback

我正在尝试构建一个REST重的应用程序。

按照Virgil在他的Google I / O演示文稿中提出的其中一个模型,我已经设置了我的应用程序:

我的活动呼叫“服务助手”,这是一个单身人士。这个单例实例化一个服务,该服务在启动时使用ContentProvider命中我的应用程序的数据库并旋转一个线程以访问任何相关同步的Web服务。我现在需要的最后一个部分是对单例进行服务回调,它会回调任何侦听活动。

这是我很困惑的部分。

现在,我正在查看Android SDK提供的RemoteService ApiDemo。在RemoteServiceBinding.java中,IRemoveService成员var被声明为mService。 mService用于处理回调。

但是,这段代码将放在我的服务助手中(记住这是一个单例)。可以有N次调用此类来启动数据库和Web服务功能的服务。我不能只声明一个名为mService的变量,对吧? RemoteService声明了一个ISecondaryService,但我可以有N个代码调用这个单例。它需要是动态的。

例如:

  • 用户在活动A上,希望在列表中显示内容。命中Service Helper单例,返回一个Cursor并启动一个服务,该服务正在查询Web服务以获取新的 thing 。 mService被实例化以处理此Service实例的回调。
  • 在此服务完成之前,用户切换到活动B并对该活动列表中的 thing 执行相同的操作。 mService已经为前一个Service实例实例化。我现在该怎么办?
  • 假设连接速度很慢,并且用户可以在第一个完成新的事物之前为20个活动执行此操作。 mService已经为前一个Service实例实例化。我该怎么做现在 ?????

我在这做什么?我很茫然。

如果Twitter应用程序已经开源,那真的很不错......

1 个答案:

答案 0 :(得分:0)

我不知道你到底在哪里,但是如果你使用了IntentService,则只需要创建一个Service,而IntentService会在队列中对Context#startService(Intent i)进行新的调用。

当单个IntentService处理队列时,它们将在IntentService的onHandleIntent(Intent i)方法中处理。在这种方法中,您可以从传递的Intent中提取额外内容,以确切了解如何处理调用Activity所提出的要求。