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

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

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

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

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

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

WorkManager

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

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

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

סנכרון נתונים עם שרת מדי פעם

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

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

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

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

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

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

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

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

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

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

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

API ספציפי

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

משתנה

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

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

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

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

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

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

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

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

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

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

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

  • אם אתם צריכים להריץ את העבודה בהקדם האפשרי, תוכלו לתזמן בקשת עבודה מהירה. האפשרות הזו שימושית במיוחד אם אתם מתזמנים את העבודה בתגובה לשידור, להתראה מדויקת או להודעה בעדיפות גבוהה ב-FCM.
  • אם אתם צריכים שהעבודה תרוץ באופן קבוע, תוכלו לתזמן עבודה תקופתית. בקשה לעבודה תקופתית מאפשרת לציין בערך באיזו תדירות העבודה תופעל, אבל אין הבטחה למועד ספציפי. כך המערכת יכולה לתזמן בקשות עבודה מאפליקציות שונות כדי לאזן את הביקוש במכשיר.
  • כדאי להגדיר אילוצים לעבודה כדי לציין את הנסיבות המתאימות להרצת המשימה. לדוגמה, אם האפליקציה צריכה להוריד משאבים לא דחופים, אפשר לציין שהמשימה צריכה לפעול בזמן שהמכשיר נטען ומחובר לרשת ללא חיוב. לאחר מכן, 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 (נדרשת הגרסה העדכנית של Canary)

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

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

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

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

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

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

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

מידע מלא זמין במסמכי העזרה של shortService.

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

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

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

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

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

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

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