Использование Service
- это именно то, что я сделал для очень похожих целей (осуществляя связь через сокеты для приложений Bluetooth и TCP / IP), и думаю, что вы наверняка захотите использовать Service
, если связь должна продолжаться дажекогда пользователь закрыл приложение.
A Service
по сути является средством для запуска кода в потоке пользовательского интерфейса (но, конечно, вы можете затем запускать другие потоки в нем), но без пользовательского интерфейса, в отличие отActivity
, с которым связан пользовательский интерфейс.
Если бы вы попытались сделать это в статическом одноэлементном классе, как вы предлагаете в качестве альтернативы, то я думаю, что проблема заключается в том, что вы не захотитеиметь очень хороший контроль над жизненным циклом.Если пользователь уходит от приложения, то, насколько я понимаю, это зависит от фреймворка, когда он решает удалить процесс и все статические объекты вместе с ним.По этой причине, если у вас есть одноэлементные классы, заполненные данными, и вы выходите из приложения, а затем возвращаетесь в приложение, вы можете обнаружить или не обнаружить, что «старые» одноэлементные экземпляры все еще существуют.По этой причине в моем приложении (которое использует очень большое количество глобальных состояний) я прибегнул к хранению фактических экземпляров моих синглетов в расширении класса .Application
, чтобы (надеюсь) лучше контролировать их жизненный цикл.
С Service
у вас есть четко определенный жизненный цикл с соответствующими обратными вызовами жизненного цикла (onCreate()
, onDestroy()
и т. Д.), Как и с Activity
.