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