2012-02-04 42 views
0

所有的一些指導,我真的找這裏是一個小的指導。我正在嘗試創建我的第一個官方Android應用程序。我是新來的java/droid,但不是編程。在過去的一個月中,我創建了許多小實驗活動,服務,線程和其他東西,它們都按計劃運行。所以現在我試圖把所有的東西都捆綁在一起,但沒有太多的運氣。需要多應用IPC

在一個新的項目,我已經編譯膽量到它運行的是不斷搗弄其他客戶端/應用程序可以使用數據服務「my.main.package」 ......嗯,這是我的計劃。例如,在這個服務中是一個不斷計數的自定義線程/循環計時器。對於其他任何應用程序來說,獲取此計時器的常量饋送和其他數據作爲偵聽器的最佳方式是在其自己的沙箱中以儘可能少的方式獲取?

我假設一個必須實現IPC AIDL但我不知道,如果它的需要和/或必要的,因爲從my.main.package數據僅僅是外向的,即其他應用程序只需要接收/聽。我的理解,需要有某種形式的消息處理或parcelable編組回事,並與AIDL可能的權限,但我已意識到編碼/解碼包裹或發送郵件每毫秒會非常繁重。您是唯一的途徑還是有辦法根據您的意圖廣播數據?

任何幫助將不勝感激!

回答

0

在一個新的項目,我已經編譯膽量入運行的服務,是不斷搗弄數據的其他客戶端/應用程序可以使用

服務應當「my.main.package」只是當它正在積極提供價值用戶運行。用戶認爲,創建服務的開發人員都是白癡,他們會用任務殺手,設置應用程序的強制停止等來攻擊他們的應用程序。

也許您的描述僅僅是描述您的應用程序,但「不斷收集數據的服務」是一種反模式。這些是手機和平板電腦,而不是服務器。

對於任何其他應用程序來說,獲取此計時器的常量饋送和作爲偵聽器的其他數據的最佳方式是在其自己的沙箱中以儘可能少的方式獲取?

最好的方法是讓他們不要成爲獨立的應用程序。

例如,在此服務中是一個不斷計數的自定義線程/循環計時器。

這不添加值給用戶。

我假設一個必須實現IPC AIDL但我不知道,如果它的需要和/或必要的,因爲從my.main.package數據僅僅是外向的,即其他應用程序只需要接收/聽。

使用AIDL的遠程服務是執行IPC的一種方式。這不是唯一的方法。這甚至不是最常見的方式。你還可以:

  • 發送廣播Intent
  • 在客戶端發送一個Messenger的服務,該服務通過該Messenger
  • 有服務更新一個ContentProvider將消息發送到客戶端,並有客戶註冊在ContentProvider

我的理解,需要有某種形式的消息手的ContentObserver靈活的或可編輯的編組以及aidl的可能的權限,但是我不得不認爲編碼/解碼包裹或者每毫秒發送一條消息將是非常重要的。

IPC對整體而言「非常重要」。因此,應儘可能避免IPC。

+0

該服務僅在需要/調用時運行,並且存在用於操作服務的活動,因此它不能全天候運行。我可能是java的新手,但我不是一個白癡;至於計時器,無論如何不可思議,對於這個項目來說,它具有重要的價值。至於我的問題,我在你的文章後重新審視了廣播,並意識到這正是我期待的,並希望它可以!在我之前見過的所有例子中,它們總是用於觸發事件等,而不是傳遞原始數據類型。所以我已經實現了廣播,它完美的工作!感謝您的回覆! – flyryguy 2012-02-06 11:58:32

0

其實IPC與AIDL是唯一的&做你的要求的最有效的方式,我認爲。如果你需要一個演示,你可以看看here。這是一個簡單的例子,我在Android上學習AIDL & Binder。希望它能給你一些啓動的簡要說明。

+0

你好!歡迎來到堆棧溢出! 「僅限鏈接」的答案在這裏不受歡迎,如果您可以引用鏈接的材料以形成答案的大部分,那將是最好的。 – Zizouz212 2015-11-15 20:58:38