bileşenleri Context
ilgili nasıl çalıştığını göstermek yardımcı olmak amacıyla, çerçeve kaynak kodunu gözden gelen bu diyagram yarattı
- bir
Context
ve hangi concr yaratır ne: biraz etrafına, aşağıdaki sorular vardı ete sınıfları kullanılıyor? TemelContext
sınıfının kendisi, hemen hemen tüm yöntemlerinin uygulanmasını gerektiren soyut bir sınıftır. Ve birContextWrapper
, başlatıldığında, temel bağlam olarak geçirilecek birContext
örneğini gerektirir, bu nedenle en az bir betonContext
sınıfı olmalıdır. ContextWrapper
ve alt sınıflarının, gerektiğinde tabanContext
sınıfına işlevsellik eklemek için sarıcı/dekoratör kalıbını kullandığını anlıyorum.ContextThemeWrapper
Amacı nedir? Birkaç yöntem geçersiz kılar, ancak birContext
tabanı sarılıyorsa, neden çağrıları yalnızcaContext
tabanına delege etmiyorsunuz? Örneğin,Activity
sınıfı,getTheme()
vesetTheme()
için özel bir uygulama sağlayanContextThemeWrapper
öğesini genişletir. Niye ya?
Android geliştirici java belgeleri biraz belirsiz. Aksi oluşturduğunuz Views'a herhangi tema uygulamak edemez,
ContextThemeWrapper bir Bağlamında için tema desteği ekler: Ör ContextWrapper
Aslında bir uygulamaya adım atmayı başardım ve “Activity” ve “Application” nin “mBaseContext” olarak kullanıldığı somut sınıfı buldum. 'ContextImpl'. https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ContextImpl.java – orangemako