Какова цель ContextWrapper (наличие прокси для контекста)? - PullRequest
1 голос
/ 23 марта 2019

Согласно документации Android, ContextWrapper является "[p] roxying реализацией Context, которая просто делегирует все свои вызовы другому Context. Может быть разделена на подклассы для изменения поведения без измененияоригинал Context. "

У меня нет большого опыта работы с шаблоном прокси.Как это используется здесь и с какой целью?Другими словами, почему его косвенные подклассы, такие как Activity и Service , не подклассируют его напрямую?

1 Ответ

1 голос
/ 24 марта 2019

Чтобы иметь возможность переопределить некоторые из его поведения.Например, у вас будет базовый контекст для приложения, затем поместите его в ContextWrapper и переопределите объект Resource для его темы (что на самом деле делает Android).

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

...