2010-08-13 26 views
3

我對Android有點新。我需要做的是在本地活動和服務之間來回發送數據。發送的信息非常敏感,不能被其他應用程序拾取。如果我理解正確,這不包括使用廣播和onBind()函數?如何在本地活動和服務之間來回發送數據

所以活動需要發送一些字符串參數到服務。另外它需要告訴服務哪個活動開始了,所以服務可以回覆正確的類,因爲許多不同的活動都會使用這個服務。一旦服務通過http請求獲取信息,它就會假設將該數據(稍後將被解析的長字符串)發回到啓動它的活動。我如何去做這件事?使用靜態變量/函數不是一個選項,因爲許多活動將再次使用此服務。當然可以使用靜態數組來保存這些類,但這看起來很醜陋......只能通過意圖發送簡單變量(不是對象)?必須有更好的方法來做到這一點。我一直在網上衝浪幾個小時。任何幫助將不勝感激。

編輯

在Android開發者中發現的例子[http://developer.android.com/reference/android/app/Service.html#stopSelf(int)]是一個很大的幫助,以實現本地粘合劑。

對於那些你感興趣的人來說,這裏有一些關於我的實現的更多信息。

  1. 一旦調用了onServiceConnected函數,就會調用服務中的函數來設置它綁定的活動。之後,服務和活動都可以來回互動。
  2. 確保服務類中的線程具有處理程序。這使得線程在完成任務後可以向其處理程序發送消息。處理程序然後將服務的結果發送回其綁定的活動。通過處理程序執行此操作可確保應用程序在完成後返回主線程。

回答

3

這不包括使用廣播和onBind()函數,如果我理解正確的東西?

客戶端和服務之間通過本地Binder交換的數據是JVM中的本地方法調用。

如果您支持API Level 4及更高版本,您還可以使用setPackage()上的Intent將廣播安全地發送到特定軟件包。

我該如何去做這件事?

Intent認沽演員你startService()bindService()使用。或撥打本地電話Binder

+0

歡呼回答! 一旦你說它可以被信任只在本地運行,我就會使用本地綁定。 – Everlost 2010-08-16 11:48:06