Как правильно отменить привязку сервиса, если нет метода exit () - PullRequest
0 голосов
/ 23 марта 2012

Служба (S1) связана в конструкторе «простого класса» C (т. Е. C не имеет методов жизненного цикла, таких как (onCreate (), onDestroy () и т. Д.), Использующих Intend. Контекст предоставляется на время конструирования в конструкторе C. C создается другими службами (Sx), использующими себя в качестве аргументов для нового C (context). Фактически, это эквивалентно использованию их соответствующих контекстов "Я думаю.

Sx1 ->
      C -> S1
Sx2 ->

Вопрос в том, каков наилучший способ / место для отсоединения от S1?

  1. Поскольку в C нет методов жизненного цикла, я должен создать «искусственный» метод onDestroy () в C, который вызывается при вызове метода Sx onDestroy? Мне это немного не нравится, потому что я ленив и могу забыть вызывать метод onDestroy () в какой-то момент времени по мере роста сложности.
  2. Или я мог бы полагаться на тот факт (не знаю, действительно ли это происходит), что Android будет управлять чистым жизненным циклом и «автоматически отсоединяет» от S1 после того, как Sx или его контекст уничтожены?

1 Ответ

0 голосов
/ 23 марта 2012

Служба (S1) связана в конструкторе «простого класса» C

Не совсем.Sx1 и Sx2 связываются с S1.Они несут ответственность за эти привязки.По какой-то причине вы просто поместили вызов bindService() в Си.

Какой лучший способ / место для отсоединения от S1?

Sx1 и Sx2должны открепиться от S1, когда они сделаны с S1.Независимо от того, связывают ли они себя или вызывают метод на C для отмены привязки, Sx1 и Sx2 отвечают за привязки и, следовательно, отвечают за привязку.

...