2012-08-04 29 views
1

我在寫一個藍牙遠程控制應用程序來控制我的藍牙啓用機器人,但我很難理解Android應用程序的工作流程。我知道我想要什麼,但做起來並不容易。其他答覆並不令人滿意。訪問來自不同活動的服務/線程

這裏有一個粗略的應用程序佈局我想:

enter image description here

如果您對如何做這件事情我很樂意考慮一個更好的主意。

主要是我的問題是從主活動的連接方法和控制活動訪問連接線程/服務(無論名稱是什麼),我如何傳遞引用?我知道主要活動可能會在應用程序的子活動中消失,所以我必須通過參考getExtra(),但它只需要一個String變量...

回答

1

您可能會喜歡的一種方法要考慮的是使用一個Bound Service.這可以返回一個接口,允許訪問該服務的公共方法。您可以將您的任何活動綁定到服務,從而將數據傳遞到服務或從服務中檢索數據。

如果您需要的服務立即與活動通信(如丟失連接),則該服務可以使用sendBroadcast,告知其已註冊的廣播接收器監聽在廣播發送的意圖活動。

+0

有沒有辦法讓我的應用程序在我的應用程序中可以讀取/寫入數據的一般輔助線程?活動的創建/銷燬確實使事情變得複雜...... – Solenoid 2012-08-04 11:20:05

+1

服務本身應該爲此服務。如果您在每個活動的onStart()中綁定到服務並在onStop()中解除綁定,那麼在您切換活動時它將繼續運行。一旦沒有活動被綁定,如果你每次綁定Context.BIND_AUTO_CREATE,它就會停止。 – NickT 2012-08-04 11:39:39

+0

謝謝,這也是我得到的結論:我必須使用一個'Service',並在每次啓動一個新的Activity時綁定它,並將它從最後一個使用它的Activity中解除綁定(不一定按順序) 。 – Solenoid 2012-08-04 11:56:05