2010-08-31 110 views
1

我试图构建一个REST沉重的应用程序。API RemoteService混淆

继他的谷歌I/O呈现由维吉尔提出的机型之一,我已经设置了我的应用程序,像这样:

我的活动呼吁“服务助手”,这是一个单身。这个单例实例化一个Service,它在开始时使用一个ContentProvider来打击我的应用程序的数据库,并且让一个线程为任何相关的同步创建一个Web服务。我现在需要的最后一部分是将服务回调给单例,该单例调用回任何监听活动。

这是我很困惑的部分。

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

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

例:

  • 用户在活动A和希望展示事情在列表中。服务助手单身人士被击中,返回一个光标并启动一个服务,该服务正在查询新的网络服务。实例化mService以处理此服务实例的回调。
  • 在本服务完成之前,用户切换到活动B,并为该活动列表中的事物做同样的事情。 mService已经为之前的Service实例实例化。现在我该怎么做?
  • 假设连接速度很慢,并且用户可以在第一次完成获取新的东西之前完成20个活动。 mService已经为之前的Service实例实例化。我该怎么办现在 ?????

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

这将是非常非常好的,如果Twitter的应用程序是开源,开源已经...

+0

甜。风滚草徽章:P – Andrew 2010-09-07 19:47:28

回答

0

我不知道你在哪里结束了这一点,但如果你使用的IntentService,只有一个服务需要将被创建,并且IntentService会将新呼叫放置到队列中的Context#startService(Intent i)

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