2012-04-29 66 views
1

我在市場上增加藍牙功能,我的免費的Android遊戲「先行者」了。我的套接字已正確設置在主活動中嵌入的線程中。我爲ConnectThread(延伸線程)創建了另一個Java文件,它將發送手機之間的播放器座標。我看了一下Service,AysncTask和Handler。除了經理之外,我不認爲任何人都會幫助我。ANDROID:使用運行從父活動線程的子活動

任何一個都將使這個工作。

如何使用藍牙插座連接我在孩子活動的父活動(在嵌入式線程創建的)?

我怎樣才能將數據發送到從ConnectThread孩子的活動,如果沒有在子活動初始化?基本上我怎麼能從線程的子活動中調用公共方法?

有沒有辦法通過我連接父活動的子活動插座?

回答

0

把靜態(類)變量無論是在父活動或(更好)的應用程序類(這樣做,創造出從Android應用程序類派生自己的應用程序類,並記得把,在你的清單中<application android:name="...">)。將套接字分配給此靜態變量。孩子的活動可以從那裏撿起來。因爲它是靜態的,所以當你的活動被刪除時,它不會被垃圾收集器清除,所以確保你關閉它,並在你完成它時將變量賦值爲null。

+0

這似乎是一個過於複雜的解決方案,應該是一個簡單的問題,但它確實有效。我最終在子類中創建了一個靜態套接字變量,並在其中運行其他代碼之前將其設置爲BT套接字。我現在有同步問題。如果兩個用戶同時按下游戲,它就會起作用。如果沒有,一個用戶會崩潰,另一個用戶將無法獲取信息。 – baconcheese113 2012-05-19 16:24:30

+0

感謝您接受我的回答。我不知道你爲什麼認爲這太複雜了。活動來來去去,你想要更持久的東西。 Application類是持久化的,所以你可以在那裏存儲一個可以從你的所有活動中訪問的引用。或者你可以使用標準的Java Singleton模式來做到這一點。你有什麼同步問題? – 2012-05-21 09:16:03