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

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

תרחישים נפוצים של העברת נתונים ברקע

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

כשבוחרים בין ממשקי API, כדאי לענות על השאלות הבאות:

  • האם המשתמש יזם את ההעברה?
  • האם יש API קיים שמטפל בהעברה הזו?
  • האם העבודה צריכה להתבצע באופן מיידי?
אפשרות מתי להשתמש תזמון דוגמאות

WorkManager

לתזמון משימות עם משך של פחות מ-10 דקות שצריכות לפעול כשהאפליקציה לא מוצגת.

ניתן לדחות: אפשר גם לשנות את ההגדרות באמצעות אילוצים

מיידי: משתמשים ב- setExpedited אם העבודה צריכה להתבצע באופן מיידי

סנכרון נתונים עם שרת באופן תקופתי

הורדה או העלאה של מדיה בזמן שהמשתמש מחובר לרשת, שהתחילו ברקע (לא על ידי המשתמש)

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

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

הפעולה מתחילה באופן מיידי, והיא מופעלת על ידי המשתמש (כלומר, לחיצה על לחצן)

העלאת תמונה, הורדת קובץ

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

למשימות קצרות וחשובות, או כשאי אפשר להשתמש ב-WorkManager. התראה מודיעה למשתמש על התקדמות ההעברה.

המינוי מתחיל באופן מיידי

connectedDevice: סנכרון נתונים עם מכשיר מחובר

shortService: עיבוד קובץ שנמשך פחות מ-3 דקות

mediaProcessing: קידוד או פענוח של קובץ מדיה

Specific API

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

משתנה

סנכרון נתונים עם מכשיר מחובר

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

שימוש בסוג המשימה של העברת נתונים שהמשתמש יזם

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

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

אם אף אחד מהתנאים האלה לא מתקיים, כדאי להשתמש ב-WorkManager במקום זאת.

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

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

שימוש ב-WorkManager להעברת נתונים

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

ריכזנו כאן כמה דברים שחשוב לזכור כשמשתמשים ב-WorkManager להעברת נתונים ברקע:

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

‫JobScheduler היא אפשרות חלופית לתזמון עבודה ברקע. בניגוד ל-WorkManager, צריך לבצע יותר הגדרות, אבל היתרון הוא שיש לכם גישה לממשקי API שלא זמינים כרגע ב-WorkManager, כמו setPrefetch,‏ setUserInitiated ו-getPendingJobReasons.

שימוש ב-API ספציפי

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

זיהוי ממשקי API ספציפיים לתרחישי שימוש

ההנחיה הזו מבקשת ממשקי API ספציפיים למשימות של העברת נתונים.


I want to transfer data from an Android mobile device to [device_type]. Is there a specific API available?

שימוש בהנחיות ל-AI

הנחיות ל-AI מיועדות לשימוש ב-Gemini ב-Android Studio.

מידע נוסף על Gemini ב-Studio זמין כאן: https://developer.android.com/studio/gemini/overview

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

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

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

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

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

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

מידע נוסף זמין במסמכי התיעוד של shortService.

שימוש בשירות בחזית במכשיר מקושר

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

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

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

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

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

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