إعداد وتهيئة WorkManager

يضبط تطبيق WorkManager تلقائيًا عند بدء تشغيل تطبيقك باستخدام خيارات معقولة تناسب معظم التطبيقات. إذا كنت بحاجة إلى مزيد من التحكّم في طريقة إدارة WorkManager وجدولتها، يمكنك تخصيص إعدادات WorkManager من خلال إعداد WorkManager بنفسك.

إعداد المحتوى عند الطلب

تتيح لك التهيئة عند الطلب إنشاء WorkManager فقط عند الحاجة إلى ذلك المكون، بدلاً من كل مرة يتم فيها تشغيل التطبيق. يؤدي ذلك إلى نقل WorkManager خارج مسار بدء التشغيل الحرج لديك، مما يؤدي إلى تحسين أداء بدء تشغيل التطبيق. لاستخدام التهيئة عند الطلب:

إزالة المهيئ التلقائي

لتوفير التهيئة الخاصة بك، يجب عليك أولاً إزالة المهيئ الافتراضي. لإجراء ذلك، عليك تعديل AndroidManifest.xml باستخدام قاعدة الدمج tools:node="remove".

منذ الإصدار 2.6 من WorkManager، يتم استخدام App Startup داخليًا ضمن WorkManager. لتوفير أداة إعداد مخصّصة، عليك إزالة العقدة androidx.startup.

إذا لم تستخدم ميزة App Startup في تطبيقك، يمكنك إزالتها تمامًا.

 <!-- If you want to disable android.startup completely. -->
 <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    tools:node="remove">
 </provider>

وبخلاف ذلك، عليك إزالة العقدة WorkManagerInitializer فقط.

 <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    android:exported="false"
    tools:node="merge">
    <!-- If you are using androidx.startup to initialize other components -->
    <meta-data
        android:name="androidx.work.WorkManagerInitializer"
        android:value="androidx.startup"
        tools:node="remove" />
 </provider>

أثناء استخدام إصدار WorkManager الأقدم من 2.6، عليك إزالة workmanager-init بدلاً من ذلك:

<provider
    android:name="androidx.work.impl.WorkManagerInitializer"
    android:authorities="${applicationId}.workmanager-init"
    tools:node="remove" />

لمعرفة المزيد من المعلومات عن استخدام قواعد الدمج في البيان، يمكنك الاطّلاع على المواد المتعلقة بدمج ملفات بيان متعددة.

قم بتنفيذ Configuration.Provider

اطلب من صفك في Application تنفيذ واجهة Configuration.Provider وتقديم طريقة التنفيذ الخاصة بك لـ Configuration.Provider.getWorkManagerConfiguration. عندما تحتاج إلى استخدام WorkManager، احرص على استدعاء الطريقة WorkManager.getInstance(Context). يستدعي WorkManager طريقة getWorkManagerConfiguration() المخصّصة لتطبيقك لاكتشاف Configuration. (لا تحتاج إلى الاتصال بـ WorkManager.initialize بنفسك.)

في ما يلي مثال على عملية تنفيذ getWorkManagerConfiguration() مخصّصة:

Kotlin


class MyApplication() : Application(), Configuration.Provider {
     override fun getWorkManagerConfiguration() =
           Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.INFO)
                .build()
}

Java


class MyApplication extends Application implements Configuration.Provider {
    @Override
    public Configuration getWorkManagerConfiguration() {
        return new Configuration.Builder()
                .setMinimumLoggingLevel(android.util.Log.INFO)
                .build();
    }
}

إعداد مخصّص قبل الإصدار 2.1.0 من WorkManager

بالنسبة إلى إصدارات WorkManager الأقدم من الإصدار 2.1.0، يتوفّر خياران للإعداد. في معظم الحالات، الإعداد التلقائي هو كل ما تحتاج إليه. للحصول على تحكُّم أكثر دقة في WorkManager، يمكنك تحديد إعداداتك الخاصة.

الإعداد التلقائي

يستخدم WorkManager ContentProvider مخصصًا لإعداد نفسه عند بدء تشغيل تطبيقك. يوجد هذا الرمز في الفئة الداخلية androidx.work.impl.WorkManagerInitializer ويستخدم الإعداد التلقائي Configuration. ويتم استخدام المهيئ التلقائي بشكل تلقائي ما لم توقِفه صراحةً. يُعد المهيئ التلقائي مناسبًا لمعظم التطبيقات.

إعداد مخصّص

إذا كنت تريد التحكم في عملية الإعداد، يجب إيقاف المهيئ التلقائي، ثم تحديد الإعداد المخصّص الذي تريده.

بعد إزالة أداة الإعداد التلقائية، يمكنك إعداد WorkManager يدويًا:

Kotlin


// provide custom configuration
val myConfig = Configuration.Builder()
    .setMinimumLoggingLevel(android.util.Log.INFO)
    .build()

// initialize WorkManager
WorkManager.initialize(this, myConfig)

Java


// provide custom configuration
Configuration myConfig = new Configuration.Builder()
    .setMinimumLoggingLevel(android.util.Log.INFO)
    .build();

//initialize WorkManager
WorkManager.initialize(this, myConfig);

تأكَّد من أنّ إعداد WorkManager يتم تنفيذه إما في Application.onCreate() أو في ContentProvider.onCreate().

للحصول على القائمة الكاملة للتخصيصات المتاحة، اطّلِع على المستندات المرجعية Configuration.Builder().