2012-03-26 64 views
0

我在這方面的知識有一點點缺陷,我想確保在寫完所有錯誤的代碼之前就做好了。如何將應用程序中的事件傳遞給Android中的活動?

我有一個Android應用程序,它可以爲應用程序設置一些TCP客戶端的核心功能。有幾個不同的活動屏幕應與應用程序交互。我被卡住的是當數據包被應用程序收到時該怎麼做。我想將其轉發到當前可見的活動,不管它是什麼。

從C#背景的,我剛剛創建的應用程序事件,並創建一個活動時只需訂閱該事件。但我越來越與Java聽衆,處理程序,...

什麼是最好的方式去呢?我應該做一個服務嗎? (但我真的不在乎應用程序未顯示時TCP連接是否被終止。)

回答

1

我會用LocalBroadcastManagerdocumentation)方法去。

創建您Application類的小狗之一,註冊/註銷在onStartonStopActivity對象。請參閱Context.registerReceiver。請注意,這需要使用Intent s,這對您的應用來說可能過於嚴格/重量輕;打包/解包數據可能是一件苦差事。

此外,您不必使用任何特定的Android類做 - 只是跟蹤哪些Activity你的程序是通過調用你的ApplicationonStartonStop。如果您將所有您感興趣的活動都擴展爲包含此邏輯的Activity的子類,則可以幫助清理您的代碼。

+0

我認爲你的第二個想法對此可能很好。我是否會在Context變量中存儲「current」活動的句柄,然後在有數據時調用該Context的Handler?這是正確的條款嗎? – Adamlive 2012-03-26 01:20:34

+0

我會更進一步並將其存儲爲「Activity」,因爲您可以訪問更多可能有用的方法,尤其是在來自後臺服務(例如'Activity.runOnUiThread')時。這樣,就不需要'Handler'。 – sastraxi 2012-03-26 01:26:04

+0

已經像冠軍一樣工作了。按照建議使用runOnUiThread。謝謝! – Adamlive 2012-03-26 23:53:25

相關問題