Может ли сохранение системной службы статически привести к утечкам памяти? - PullRequest
0 голосов
/ 11 февраля 2019

Все мы знаем, что статическое хранение объекта контекста (кроме контекста приложения) - это плохая практика, потому что это может привести к утечкам памяти.Но можете ли вы сохранить системный сервис, полученный из объекта контекста?Такие как ConnectivityManager?

// Is this okay?
static ConnectivityMananger connectivityManager;
...
connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

1 Ответ

0 голосов
/ 11 февраля 2019

Я рекомендую использовать приложение Context для получения такой системной службы:

connectivityManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);

Вероятно Все системные службы используют приложение Context для внутреннего использования, но этот подход постепеннобезопаснее, за счет вызова дополнительного метода.

Если системная служба использует приложение Context, вы не получите утечку Context при получении системной службы.Если вы используете какую-либо утечку из-за использования системной службы, может отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...