2010-08-31 112 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所提出的要求。