Intereting Posts
Два разных макета для одного вида деятельности Java / Android – проверка строки JSON по строковой схеме Текст ярлыка не обновляется в файлах tableview в титане android.but работает в IOS Исключение в потоке «main» java.lang.NoClassDefFoundError: junit / textui / ResultPrinter Защелка (используется для ожидающего ответа на асинхронный режим) замораживает WebView (и пользовательский интерфейс) Адаптер RecyclerView notifyDataSetChanged не работает Фрагмент замещения Android по-прежнему отображает часть замещенного фрагмента Как удалить репозиторий и добавить новый в студию Android? Пакет совместимости с Android Фрагмент как внутренний статический класс Не удается найти исполняемый файл apksigner для ручного подписи APK Vertex Buffer Objects (VBO) не работает на Android 2.3.3, используя GLES20 Как изменить цвет дочернего разделителя ExpanableListView по файлу xml-макета? Виджет Android не отображается в списке после Android, есть ли способ отключить запись внутри выбора даты с помощью клавиатуры? Ресурсы и платформы для мобильных разработок (iphone, android) с использованием HTML5

Зачем использовать ContextWrapper непосредственно в Activity вместо имплицированного контекста из этого "

Просматривая некоторые якобы «хорошие» источники источников, чтобы узнать подробности и трюки обработки контекста в Android, я столкнулся с одним шаблоном, который я не понимаю.

В чем преимущество использования ContextWrapper, когда вы могли одинаково хорошо использовать неявный контекст?

Например, зачем использовать следующее в методе активности (определенном непосредственно в классе Activity)

... ContextWrapper cw = new ContextWrapper(getApplicationContext()) File filesDir = cw.getFilesDir(); ... 

Вместо того, чтобы просто

 ... File filesDir = getFilesDir(); ... 

Хотя getFilesDir () определен в классе ContextWrapper, Activity все равно является подклассом ContextWrapper, так что вы все равно имеете прямой доступ к этому методу.

Итак, какая потенциальная проблема (которую я не вижу) делает этот дополнительный адрес сложности?

Solutions Collecting From Web of "Зачем использовать ContextWrapper непосредственно в Activity вместо имплицированного контекста из этого ""

Я бы сказал (и, может быть, ошибаюсь), что в сценарии (и контексте), который вы представили, может не повлиять. getApplicationContext().getFilesDir() можно было использовать так же легко.

Тем не менее, я считаю, что ContextWrapper может быть полезен в других сценариях. Насколько я понимаю, это шаблон адаптера. Возможно, вы захотите предоставить другое поведение только определенным методам при проксировании всех остальных исходной ссылки на контекст, с которой вы проходите.

RemoteViews этот фрагмент кода из RemoteViews :

 // RemoteViews may be built by an application installed in another // user. So build a context that loads resources from that user but // still returns the current users userId so settings like data / time formats // are loaded without requiring cross user persmissions. final Context contextForResources = getContextForResources(context); Context inflationContext = new ContextWrapper(context) { @Override public Resources getResources() { return contextForResources.getResources(); } @Override public Resources.Theme getTheme() { return contextForResources.getTheme(); } };