Мои мысли об использовании сервиса - это наблюдение; и последующее действие снимается с потока пользовательского интерфейса.
Только если вы разветвляете свой собственный поток, и только если «наблюдение» поддерживает альтернативные потоки. Службы находятся в «фоне» с точки зрения пользовательского интерфейса (они не рисуются непосредственно на экране), но по умолчанию они не находятся в «фоне» с точки зрения потоков.
Это разумный подход или в Android SDK есть что-то, что могло бы сделать это проще?
Невозможно ответить, учитывая то, что вы написали выше. Вы, кажется, думаете, что кнопка важна - вероятно, это не так. Что, вероятно, важно, так это то, что этот «объект» состоит в том, что вы «наблюдаете» ... и вы не сказали, что это такое.
Если ваша служба надежно отменит регистрацию в stopService()
, вы не должны сталкиваться с проблемами сбора мусора при таком подходе. Тем не менее, обработка потоков относительно наблюдателя / наблюдаемой модели обычно является обязанностью наблюдаемой - в данном случае, таинственного «объекта».