將模塊service化的好處

藍牙的所有操作最好都封裝成一個service,好處是相對獨立,作爲一個service組件,可以指定所運行的進程,所有實現徹底和外部解耦,不管是同進程還是跨進程調用對外接口是不變的。因爲APP中可能拆分成多個進程,這些進程對service的訪問是統一的,不管和service是不是在同一個進程。另外放在一個service裏可以保持數據只有一個操作對象,調用方來自多個進程,但是最後操作數據的只有service進程本身。如果沒有service化,只對外提供一個接口,那麼操作數據的進程可能有多個,會出問題的。還有一個好處是service作爲一個組件即使APP在後臺系統也不會輕易殺掉進程,如果接口沒有依託於任何組件,則當APP是空殼時很容易被殺掉。

如果不這樣做,會出現的問題是,如果APP拆分成了多個進程,那樣對外接口也需要改動成支持跨進程的,包括傳輸的數據是否支持跨進程也要考慮。比如之前要返回gatt,如果是同進程這個gatt進程內傳遞是沒有問題的,但是現在跨進程是無法傳遞gatt的,因爲既沒有實現parcelable也不是Binder。接口改動後第三方也要跟着改動,這是很麻煩的。

總結一下,以後這種比較獨立的模塊最好都放在一個service中,並且要預想到可能會支持跨進程的。這種service化可拓展性、穩定性和靈活性都會更好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章