הגדרה ואתחול של 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, יש להקפיד להפעיל את ה-method 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();
    }
}

אתחול מותאם אישית לפני WorkManager 2.1.0

בגרסאות של WorkManager לפני גרסה 2.1.0, יש שתי אתחול אפשרויות. ברוב המקרים, הפרמטר אתחול ברירת מחדל הוא כל מה שצריך. לשליטה מדויקת יותר ב-WorkManager, אפשר לציין תצורה משלכם.

אתחול ברירת המחדל

ב-WorkManager משתמש ב-ContentProvider בהתאמה אישית כדי לאתחל את עצמו כשהאפליקציה שלך מתחיל. הקוד הזה נמצא במחלקה הפנימית androidx.work.impl.WorkManagerInitializer ומשתמש בברירת המחדל Configuration. מאתחל ברירת המחדל משמש באופן אוטומטי, אלא אם להשבית אותם באופן מפורש. מאתחל שמוגדר כברירת מחדל מתאים לרוב האפליקציות.

אתחול מותאם אישית

אם ברצונך לשלוט בתהליך האתחול, עליך להשבית את מאתחל ברירת המחדל, ולאחר מכן להגדיר תצורה מותאמת אישית משלכם.

לאחר הסרת מאתחל ברירת המחדל, ניתן לאתחל באופן ידני מנהל עבודה:

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() מסמכי עזר.