כברירת מחדל, 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()
מסמכי עזר.