2012-06-17 24 views
0

假設我在Activity A中創建了一個客戶端TCP套接字。我想將該套接字發送給Activity B.現在在Activity B中,基於某些條件,我將關閉該套接字。問題是intent.putExtra()不支持發送套接字。那麼該怎麼做?如何在android中將TCP套接字從一個活動發送到另一個活動?

+2

[如何在活動之間傳遞socket,inputstream,outputstream對象](http://stackoverflow.com/questions/3137223/how-to-pass-socket-inputstream-outputstream-objects-between-activities) –

回答

5

如果您認爲有多個「擁有」套接字的活動,那麼它們都不應該「擁有」套接字。其他的東西,比如Service,應該負責管理套接字。在這種情況下,活動A可以啓動Service來完成套接字工作,而活動B可以在不再需要套接字時停止服務。

否則,如果那些活動緊密結合,則不應該是單獨的活動。活動旨在鬆散耦合,類似於Web應用程序中的網頁。

+0

ya正確。但是你需要一些參考來關閉這個套接字。對吧?那是什麼參考? – vij

+0

@vij:「但是你需要一些參考來關閉那個套接字,對嗎?」 - 如果它由服務管理則不適用。從您的活動的角度來看,「參考」是服務的名稱,或者您正在使用的任何內容來構建'Intent'來標識您的'startService()'和'stopService()'調用的服務。服務本身保存你的套接字並管理該套接字上的通信線程(例如,分支線程在該套接字上收聽傳入消息)。 – CommonsWare

+0

服務本身。您打電話給SErvice,然後採取適當的措施。 SErvice'管理'TCP連接 – Kerry

相關問題