אפשרויות למשימות ברקע בנושא העברת נתונים

באפליקציות רבות צריך להעביר נתונים ברקע. הדף הזה יעזור לכם למצוא את הגישה המתאימה לצרכים שלכם.

תרחישים לדוגמה בהעברה

בקטע הזה מתוארים כמה מצבים נפוצים שבהם צריך להעביר אפליקציות אל המכשיר או ממנו, ועוזרים לך לבחור את הכלי המתאים והמצב הזה.

העברת נתונים ברשת

אם המשתמש יזם את ההעברה וגם צריך להשאיר את המשתמש לקבל מידע על התקדמות ההעברה, להשתמש בהעברת נתונים ביוזמת המשתמש ממשקי API. אחרת, משתמשים ב-WorkManager או סוג השירות המתאים שפועל בחזית.

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

העברת נתונים למכשיר מקומי או ממנו

להשתמש ב-API ספציפי, אם יש כזה (למשל, המכשיר הנלווה). Manager); אחרת, צריך להשתמש בחזית connectedDevice .

השלמת משימה קצרה וקריטית

שימוש בשירות שפועל בחזית shortService.

עיבוד קבצים (לדוגמה, העברת נתונים לכרטיס SD או ממנו, שינוי גודל התוכן או הצפנה או פענוח של נתונים)

אם המשימה יכולה להסתיים תוך פחות משלוש דקות, משתמשים בshortService שירות שפועל בחזית. אחרת, משתמשים ב-WorkManager.

שימוש בממשקי ה-API להעברת נתונים ביוזמת המשתמש

אם האפליקציה שלך צריכה להעביר נתונים לשרת מרוחק, כדאי להשתמש ממשקי API חדשים להעברת נתונים ביוזמת המשתמש. ממשקי ה-API האלה מתאימים כאשר אם התנאים הבאים נכונים:

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

אם אחד מהתנאים האלה לא מתקיים, צריך להשתמש ב-WorkManager במקום זאת.

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

מידע נוסף זמין במסמכי התיעוד בנושא העברת שירותים שפועלים בחזית אל משימות של העברת נתונים ביוזמת המשתמש.

שימוש ב-WorkManager

ברוב המקרים, WorkManager הוא האפשרות הטובה ביותר כשצריך לתזמן עבודה. צריך לעצב את המשימות כך שניתן יהיה להפריע להן או לעכב אותן על ידי המערכת. מידע נוסף זמין במסמכי התיעוד של WorkManager.

כמה הערות שיכולות לעזור לך כשעוברים מחזית השירות ל-WorkManager:

  • אם אתה צריך להריץ את העבודה בהקדם האפשרי, תוכל לתזמן בקשת עבודה מזורזת. האפשרות הזו שימושית במיוחד אם אתם לתזמן את העבודה בתגובה לשידור, בהתראה מדויקת או הודעת FCM בעדיפות גבוהה.
  • אם אתה צריך שהעבודה תפעל מדי פעם, ניתן לתזמן תקופתיות work. בקשת עבודה תקופתית מאפשרת לציין בערך באיזו תדירות יפעל, אך הוא לא מבטיח זמן מסוים. זה מאפשר למערכת לתזמן בקשות עבודה מאפליקציות שונות כדי לאזן בין הדרישות במכשיר.
  • צריך להגדיר אילוצים של עבודה כדי לציין בנסיבות המתאימות להפעלת העבודה שלכם. לדוגמה, אם צריך להוריד אפליקציה למשאבים לא דחופים, אפשר לציין שהמשימה צריכה לפעול בזמן שהמכשיר נטען ומחובר לרשת לא נמדדת. מנהל העבודה יכול ולאחר מכן להריץ את המשימה בזמן שמאזן את העומס על המערכת.
  • ב-WorkManager אפשר לבטל ולנסות שוב לבצע משימה אם יש בכך צורך. לדוגמה, המשתמש יכול לכבות את המכשיר במהלך עבודה. המערכת יכולה ולנסות שוב לבצע את המשימה כשהמכשיר יהיה זמין. חשוב לעצב ולבדוק את תהליך העבודה שלכם כדי לוודא שמחזור הביטול והניסיון החוזר פועל כראוי.

צריך להשתמש בסוג שירות ספציפי יותר שפועל בחזית

אם אין לך אפשרות לעבור לעבודה ברקע בדרך אחרת, עדיין אפשר צריכים להשתמש בשירות שפועל בחזית. במקרה כזה, צריך למצוא סוג השירות שבו רוצים להשתמש, במקום dataSync. מאחר שהקוד שלך כבר משתמש שירות שפועל בחזית. ההעברה הזו פשוטה; צריך רק לבחור הסוג המתאים של השירות שפועל בחזית, ולוודא שהאפליקציה עומדת בדרישות הדרישות של השירות.

כמו תמיד, כששוקלים להשתמש בשירות שפועל בחזית, כדאי לבדוק אם יש API חלופי טוב יותר שמותאם לשימוש שלך מותאמת אישית.

שימוש בשירות מקוצר שפועל בחזית

אם האפליקציה צריכה לבצע משימה קצרה וקריטית, יש להשתמש ב-shortService בחזית הוא האפשרות הטובה ביותר. הנה כמה מצבים שבהם shortService יכול להיות ששירות שפועל בחזית יתאים:

  • המשתמש יוזם פעולה (כגון סנכרון נתונים לשרת) וברצונך כדי לוודא שהפעולה תסתיים גם אם המשתמש שולח באופן מיידי את את האפליקציה לרקע.
  • שמירת מידע בזיכרון באחסון מתמיד.
  • הצפנה או פענוח של מידע.

לקבלת מידע מלא, עיינו במאמרי העזרה בנושא shortService.

שימוש בשירות שפועל בחזית של מכשיר מחובר

אם עליך להעביר נתונים למכשיר מקומי אחר, כדאי להשתמש connectedDevice שירות שפועל בחזית. הנה כמה מצבים נפוצים שבהם אולי תצטרכו לעשות את זה:

  • תקשורת באמצעות אביזר Bluetooth, כמו אוזניות או שעון חכם
  • העברת נתונים למכשיר שמחובר באופן מקומי, באמצעות חיבור USB, NFC, או חיבור מקומי לאינטרנט

עם זאת, במצבים כאלה תוכלו להשתמש במכשיר הנלווה להתחבר למכשיר במקום להשתמש בשירות שפועל בחזית. כמו תמיד, אם קיים ממשק API למטרה מיוחדת עבור התרחיש לדוגמה שלכם, בדרך כלל עדיף להשתמש בשירות שפועל בחזית.

מקורות מידע נוספים

מידע נוסף על השינוי הזה בשירותים שפועלים בחזית זמין במאמרים הבאים: משאבים נוספים: