Uygulama Başlatma Android Jetpack'in bir parçasıdır.
Uygulama Başlatma kitaplığı, ilk kullanıma hazırlamanız için basit ve etkili bir yöntem sunar. bileşenlerine ayıralım. Hem kitaplık geliştiricileri hem de uygulama geliştiriciler başlatma sıralarını kolaylaştırmak ve sıralamayı açıkça ayarlamak için Uygulama Başlatma'yı kullanabilir ilk kullanıma hazırlama sürecidir.
Her bileşen için ayrı içerik sağlayıcılar tanımlamak yerine Uygulama Başlatma, bir ortak çalışan bileşen başlatıcıları tanımlamanıza tek bir içerik sağlayıcı. Bu, uygulama başlatma süresini önemli ölçüde kısaltabilir.
Kurulum
Kitaplığınızda veya uygulamanızda Jetpack Startup'ı kullanmak için aşağıdakini Gradle'ınıza ekleyin dosya:
Eski
dependencies { implementation "androidx.startup:startup-runtime:1.2.0" }
Kotlin
dependencies { implementation("androidx.startup:startup-runtime:1.2.0") }
Uygulama başlatılırken bileşenleri başlatma
Uygulamalar ve kitaplıklar, genellikle gerekli olduğunda bileşenlerin hemen başlatılmasını uygulama başlar. İçerik sağlayıcıları kullanarak bu ihtiyacı karşılayabilirsiniz. her bağımlılığı başlatın, ancak içerik sağlayıcıların örneklendirmesi pahalıdır. ve başlatma sırasını gereksiz biçimde yavaşlatabilir. Ayrıca, Android ilk kullanıma hazırlar. Uygulama Başlatma; uygulama başlatma sırasında bileşenleri ilk kullanıma hazırlamanın daha etkili bir yolunu ve bağımlılıklarını tanımlamalısınız.
Uygulama Başlatma özelliğini kullanarak başlatma sırasında bileşenleri otomatik olarak ilk kullanıma hazırlamak için: uygulamanın yapması gereken her bileşen için bir bileşen başlatıcısı tanımlama ilk kullanıma hazırla.
Bileşen başlatıcıları uygulama
Her bileşen başlatıcıyı uygulayan bir sınıf oluşturarak
Initializer<T> arayüzü.
Bu arayüzde iki önemli yöntem tanımlanmaktadır:
- Gerekli tüm işlemleri içeren
create()yöntemi, ilk kullanıma hazırlar ve birTörneği döndürür. - Diğer
dependencies()Başlatıcının bağlı olduğuInitializer<T>nesne. Bunu kullanabilirsiniz yöntemini kullanın.
Örneğin, uygulamanızın
WorkManager ve şunu yapması gerekiyor:
ilk kullanıma hazırlar. Şu özelliklere sahip bir WorkManagerInitializer sınıfı tanımlayın:
Initializer<WorkManager> uygular:
Kotlin
// Initializes WorkManager.
class WorkManagerInitializer : Initializer<WorkManager> {
override fun create(context: Context): WorkManager {
val configuration = Configuration.Builder().build()
WorkManager.initialize(context, configuration)
return WorkManager.getInstance(context)
}
override fun dependencies(): List<Class<out Initializer<*>>> {
// No dependencies on other libraries.
return emptyList()
}
}
Java
// Initializes WorkManager.
class WorkManagerInitializer implements Initializer<WorkManager> {
@Override
public WorkManager create(Context context) {
Configuration configuration = Configuration.Builder().build();
WorkManager.initialize(context, configuration);
return WorkManager.getInstance(context);
}
@Override
public List<Class<Initializer<?>>> dependencies() {
// No dependencies on other libraries.
return emptyList();
}
}
WorkManager, dependencies() yöntemi boş bir liste döndürüyor
diğer kitaplıklar da olabilir.
Uygulamanızın aynı zamanda ExampleLogger adlı bir kitaplığa da bağlı olduğunu varsayalım.
dönüşüm sayısı WorkManager metriğine bağlıdır. Bu bağımlılık demek oluyor ki
Uygulama Başlatma'nın önce WorkManager uygulamasını başlattığını unutmayın. Bir
Initializer<ExampleLogger> uygulayan ExampleLoggerInitializer sınıfı:
Kotlin
// Initializes ExampleLogger.
class ExampleLoggerInitializer : Initializer<ExampleLogger> {
override fun create(context: Context): ExampleLogger {
// WorkManager.getInstance() is non-null only after
// WorkManager is initialized.
return ExampleLogger(WorkManager.getInstance(context))
}
override fun dependencies(): List<Class<out Initializer<*>>> {
// Defines a dependency on WorkManagerInitializer so it can be
// initialized after WorkManager is initialized.
return listOf(WorkManagerInitializer::class.java)
}
}
Java
// Initializes ExampleLogger.
class ExampleLoggerInitializer implements Initializer<ExampleLogger> {
@Override
public ExampleLogger create(Context context) {
// WorkManager.getInstance() is non-null only after
// WorkManager is initialized.
return ExampleLogger(WorkManager.getInstance(context));
}
@Override
public List<Class<Initializer<?>>> dependencies() {
// Defines a dependency on WorkManagerInitializer so it can be
// initialized after WorkManager is initialized.
return Arrays.asList(WorkManagerInitializer.class);
}
}
dependencies() yöntemine WorkManagerInitializer eklediğiniz için
Başlatma, ExampleLogger tarihinden önce WorkManager işlemini başlatır.
Manifest girişlerini ayarlama
Uygulama Başlatma, InitializationProvider adlı özel bir içerik sağlayıcı içeriyor
bulmak ve çağırmak için kullanır. Uygulama Başlatma
önce bir <meta-data> girişi olup olmadığını kontrol ederek bileşen başlatıcılarını keşfeder
InitializationProvider manifest girişinin altında. Ardından Uygulama Başlatma
Daha önce keşfettiği tüm başlatıcılar için dependencies() yöntem.
Bu, bir bileşen başlatıcının Uygulama tarafından bulunabilir olması için Başlatma durumunda aşağıdaki koşullardan biri yerine getirilmelidir:
- Bileşen başlatıcının altında karşılık gelen bir
<meta-data>girişi vardır:InitializationProvidermanifest girişi. - Bileşen başlatıcı,
dependencies()yönteminde listelenen bir başlatıcıyı kullanabilirsiniz.
WorkManagerInitializer ve Arkadaş Bitkiler projesinin
ExampleLoggerInitializer. Uygulama Startup'ın bunları keşfedebilmesi için
manifest dosyasına aşağıdakini ekleyin:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- This entry makes ExampleLoggerInitializer discoverable. -->
<meta-data android:name="com.example.ExampleLoggerInitializer"
android:value="androidx.startup" />
</provider>
WorkManagerInitializer için bir <meta-data> girişi eklemeniz gerekmez.
çünkü WorkManagerInitializer, ExampleLoggerInitializer öğesinin bir bağımlılığıdır.
Yani, ExampleLoggerInitializer bulunabilir durumdaysa
WorkManagerInitializer.
tools:node="merge" özelliği, manifest birleştirme işleminin
aracı çakışan girişleri düzgün bir şekilde çözer.
lint kontrollerini çalıştır
Uygulama Başlatma kitaplığı, kontrol etmek için kullanabileceğiniz bir dizi lint kuralı içerir.
Bileşen başlatıcılarınızı doğru tanımlayıp tanımlamadığınızı kontrol edin. Şu işlemleri gerçekleştirebilirsiniz:
bu lint kontrollerini komut satırından ./gradlew :app:lintDebug çalıştırarak yapabilirsiniz.
Bileşenleri manuel olarak başlat
Normalde Uygulama Başlatma özelliğini kullandığınızda InitializationProvider nesnesi,
adlı varlık
AppInitializer yerine
uygulama başlatılırken bileşen başlatıcılarını otomatik olarak keşfedip çalıştırın.
Ancak, manuel olarak yapmak için doğrudan AppInitializer
ihtiyaç duymadığınız bileşenleri başlatın. Buna
geç başlatma olanağı sunar ve başlatma maliyetlerini en aza indirmeye yardımcı olur.
Öncelikle otomatik başlatmayı istediğiniz bileşenler için devre dışı bırakmanız gerekir manuel olarak başlatın.
Tek bir bileşen için otomatik başlatmayı devre dışı bırak
Otomatik başlatmayı tek bir bileşen için devre dışı bırakmak üzere
Manifest'ten söz konusu bileşenin başlatıcısı için <meta-data> girişi.
Örneğin, aşağıdakilerin manifest dosyasına eklenmesi, otomatik
ExampleLogger için başlatma:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data android:name="com.example.ExampleLoggerInitializer"
tools:node="remove" />
</provider>
Girişi kaldırmak yerine girişte tools:node="remove" yöntemini kullanmışsınız
birleştirme aracının, bu girişi diğer tüm
birleştirebilirsiniz.
Tüm bileşenler için otomatik başlatmayı devre dışı bırak
Tüm otomatik başlatmayı devre dışı bırakmak için şunun için girişin tamamını kaldırın:
Manifest dosyasındaki InitializationProvider:
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
Bileşen başlatıcıları manuel olarak ara
Bir bileşen için otomatik başlatma devre dışı bırakılmışsa,
bileşeni ve bağımlılıklarını manuel olarak başlatmak için AppInitializer tuşlarına basın.
Örneğin, aşağıdaki kod AppInitializer yöntemini çağırır ve manuel olarak başlatır
ExampleLogger:
Kotlin
AppInitializer.getInstance(context)
.initializeComponent(ExampleLoggerInitializer::class.java)
Java
AppInitializer.getInstance(context)
.initializeComponent(ExampleLoggerInitializer.class);
Sonuç olarak Uygulama Başlatma, WorkManager şu nedenle de ilk kullanıma hazırlar: WorkManager
bir ExampleLogger bağımlılığı.
Geri bildirim gönder
Aşağıdaki kaynakları kullanarak geri bildiriminizi ve düşüncelerinizi bizimle paylaşın:
- Sorun izleyici

- Hataları düzeltebilmemiz için sorunları bildirin. ziyaret edin.
Sizin için önerilenler
- Not: JavaScript kapalıyken bağlantı metni gösterilir
- Uygulama Mimarisi: Veri Katmanı - WorkManager ile Görev Planlama - Android Geliştiricileri
- Uygulama Mimarisi: Veri Katmanı - DataStore - Android Geliştiricileri