2016-08-13 5 views
3

Мне нужно получить String из ресурсов в некотором месте, где Context объект недоступен. Я могу передать объект контекста в качестве параметра и получить строку из ресурсов, как это:Какие недостатки использования контекста приложения вместо активности для получения строк?

context.getString(R.string.some_string); 

Но я также могу использовать Application (extends Application) экземпляр так:

MyApplication.getInstance().getResources().getString(R.string.some_string) 

Есть ли какие-либо недостатки для второго подхода?

ответ

0

Вы должны использовать ApplicationContext, если хотите сделать что-то глобальное для всех видов деятельности или удержать что-то, пока пользователь не выйдет из вашего приложения.

Activity context держать на объекты, пока activity является alive и память будет выпущена ondestroy вызова активности, но если вы использовали контекст приложения, то объект будет оставаться внутри памяти, до тех пор, как ваше приложение активно, и это может привести к a memory leak.

В вашем случае лучше использовать контекст активности, если это возможно, для объектов, локальных для этой активности, особенно когда что-то связано с компонентами деятельности GUI.

Прочтите этот post для получения более подробной информации

 Смежные вопросы

  • Нет связанных вопросов^_^