כדי להתחיל להשתמש ב-Work Manager, צריך קודם לייבא את הספרייה ל-Android פרויקט.
מוסיפים את יחסי התלות הבאים לקובץ build.gradle
של האפליקציה:
מגניב
dependencies { def work_version = "2.9.1" // (Java only) implementation "androidx.work:work-runtime:$work_version" // Kotlin + coroutines implementation "androidx.work:work-runtime-ktx:$work_version" // optional - RxJava2 support implementation "androidx.work:work-rxjava2:$work_version" // optional - GCMNetworkManager support implementation "androidx.work:work-gcm:$work_version" // optional - Test helpers androidTestImplementation "androidx.work:work-testing:$work_version" // optional - Multiprocess support implementation "androidx.work:work-multiprocess:$work_version" }
Kotlin
dependencies { val work_version = "2.9.1" // (Java only) implementation("androidx.work:work-runtime:$work_version") // Kotlin + coroutines implementation("androidx.work:work-runtime-ktx:$work_version") // optional - RxJava2 support implementation("androidx.work:work-rxjava2:$work_version") // optional - GCMNetworkManager support implementation("androidx.work:work-gcm:$work_version") // optional - Test helpers androidTestImplementation("androidx.work:work-testing:$work_version") // optional - Multiprocess support implementation("androidx.work:work-multiprocess:$work_version") }
אחרי שהוספתם את יחסי התלות ותסנכרנו את פרויקט Gradle, השלב הבא הוא להגדיר עבודה כלשהי שצריך להריץ.
הגדרת היצירה
העבודה מוגדרת באמצעות Worker
בכיתה. ה-method doWork()
פועלת באופן אסינכרוני ברקע
שרשור סופק על ידי WorkManager.
כדי ליצור עבודות להרצה של WorkManager, צריך להרחיב את הכיתה Worker
לשנות את השיטה doWork()
. לדוגמה, כדי ליצור קובץ Worker
להעלאה
תמונות, תוכלו לבצע את הפעולות הבאות:
Kotlin
class UploadWorker(appContext: Context, workerParams: WorkerParameters): Worker(appContext, workerParams) { override fun doWork(): Result { // Do the work here--in this case, upload the images. uploadImages() // Indicate whether the work finished successfully with the Result return Result.success() } }
Java
public class UploadWorker extends Worker { public UploadWorker( @NonNull Context context, @NonNull WorkerParameters params) { super(context, params); } @Override public Result doWork() { // Do the work here--in this case, upload the images. uploadImages(); // Indicate whether the work finished successfully with the Result return Result.success(); } }
Result
שהוחזר מ-doWork()
מודיע לשירות WorkManager אם
הצליחה ובמקרה של כשל,
בוצע ניסיון נוסף.
Result.success()
: העבודה הסתיימה בהצלחה.Result.failure()
: העבודה נכשלה.Result.retry()
: העבודה נכשלה ויש לנסות אותה בפעם אחרת בהתאם מדיניות בנושא ניסיון חוזר.
יצירת WorkRequest
אחרי הגדרת העבודה, יש לתזמן אותה באמצעות שירות WorkManager כדי לרוץ. ב-WorkManager יש גמישות רבה בתזמון של בעבודה. אפשר לתזמן אותו כך שהוא ירוץ מדי פעם על פני תקופת זמן מסוימת, או לתזמן את ההפעלה כך שהיא תפעל פעם אחת בלבד שעה.
לא משנה איך בוחרים לתזמן את העבודה, תמיד משתמשים
WorkRequest
אומנם
Worker
מגדיר את יחידת העבודה,
WorkRequest
(ו
מחלקות משנה) מגדירים איך ומתי להפעיל אותו. במקרה הפשוט ביותר, אפשר
להשתמש ב
OneTimeWorkRequest
,
כפי שאפשר לראות בדוגמה הבאה.
Kotlin
val uploadWorkRequest: WorkRequest = OneTimeWorkRequestBuilder<UploadWorker>() .build()
Java
WorkRequest uploadWorkRequest = new OneTimeWorkRequest.Builder(UploadWorker.class) .build();
שליחת WorkRequest למערכת
לסיום, צריך לשלוח את WorkRequest
אל WorkManager
באמצעות
enqueue()
.
Kotlin
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest)
Java
WorkManager .getInstance(myContext) .enqueue(uploadWorkRequest);
הזמן המדויק שבו העובד יבצע תלוי
אילוצים שנעשה בהם שימוש ב-WorkRequest
ובאופטימיזציות של המערכת.
WorkManager נועד לספק את ההתנהגות הטובה ביותר בכפוף להגבלות האלה.
השלבים הבאים
המדריך הזה לתחילת העבודה מגרד רק את פני השטח. WorkRequest
יכול
לכלול גם מידע נוסף, כמו המגבלות שלפיהן
הפעולה צריכה לרוץ, קלט לעבודה, מדיניות עיכוב והשהיה לפני ניסיון חוזר (backoff) של ניסיון חוזר
בעבודה. בקטע הבא, הגדרת העבודה שלכם
שלכם,
לקבל מידע נוסף על האפשרויות האלה בפירוט רב יותר כדי להבין
לקביעת לוח זמנים לעבודה ייחודית וחוזרת.
מקורות מידע נוספים
בנוסף למסמכי התיעוד במדריך, יש כמה בלוגים, Codelabs וקודים דוגמאות שיעזרו לך להתחיל.
דוגמיות
- WorkManagerSample, אפליקציה פשוטה לעיבוד תמונות.
- Sunflower, אפליקציית הדגמה שמדגימה שיטות מומלצות בארכיטקטורות שונות כולל WorkManager.
שיעורי Lab
- עבודה עם WorkManager (Kotlin) ו-(Java)
- WorkManager Advanced (Kotlin)
בלוגים
- היכרות עם WorkManager
- מידע בסיסי על WorkManager
- WorkManager ו-Kotlin
- התקופה ב-WorkManager
- התאמה אישית של Work Manager – יסודות
- התאמה אישית של WorkManager באמצעות Dagger