Ответ 1
Обычно я рекомендую сделать это в onCreate()
/onDestroy()
или onStart()
/onStop()
, в зависимости от семантики, которую вы хотите:
-
Если ваш
Activity
хочет взаимодействовать сService
все время его запуска (например, возможно, он может получить некоторые данные из сети для вас и вернет данные, когда они готовы, и вы хотите чтобы это происходило в фоновом режиме, поэтому, если пользователь вернется, у вас будут готовые данные), возможно, подходитonCreate()
/onDestroy()
. Обратите внимание, что семантика здесь заключается в том, что все время, когда вашActivity
работает, ему нуженService
, поэтому, если этотService
работает в другом процессе, тогда вы увеличили его вес и сделали его более вероятным для него быть убитым в фоновом режиме. -
Если ваш
Activity
заинтересован только в работе сService
, пока он виден, то подходитonStart()
/onStop()
. Это означает, что вашActivity
будет отвязан отService
, когда пользователь покинет его (и он больше не будет виден) и подключится к резервному копированию в следующий раз, когда будет возвращен, и он будет перезапущен и возобновлен.
Обычно я не рекомендую делать bind/unbind в onResume()
и onPause()
. Обычно они не будут значительно уменьшать сумму, которую вы используете Service
(и, следовательно, ваши накладные расходы), и на самом деле, поскольку пауза и возобновление происходит при каждом изменении активности, это путь кода, который вы хотите сохранить как можно более легким, Выполнение этого здесь может иметь другие неожиданные негативные последствия: например, если несколько Activity
в вашем приложении привязаны к тому же Service
, когда происходит переход между двумя из этих действий, Service
также может быть уничтожен и воссоздан как текущий Activity
приостанавливается до следующего возобновления.
Также эти пары (onCreate()
/onDestroy()
, onStart()
/onStop()
, onPause()
/onResume()
) предназначены для правильных пар для получения и затем выделения ресурсов (например, привязки к Service
s, регистрировать приемники и т.д.), чтобы убедиться, что они были правильно приобретены до того, как они были необходимы и выпущены (и не просочились), когда они больше не нужны.