באפליקציות רבות צריך להעביר נתונים ברקע. הדף הזה יעזור לכם למצוא את הגישה המתאימה לצרכים שלכם.
תרחישים לדוגמה בהעברה
בקטע הזה מתוארים כמה מצבים נפוצים שבהם צריך להעביר אפליקציות אל המכשיר או ממנו, ועוזרים לך לבחור את הכלי המתאים והמצב הזה.
- העברת נתונים ברשת
אם המשתמש ביצע את ההעברה וגם צריך להשאיר את המשתמש לקבל מידע על התקדמות ההעברה, להשתמש בהעברת נתונים ביוזמת המשתמש ממשקי API. אחרת, משתמשים ב-WorkManager או סוג השירות המתאים שפועל בחזית.
אם צריך לתזמן הורדה, אפשר גם להשתמש
DownloadManager
האפליקציהDownloadManager
מנהלת את במחזור חיים, ומטפלת בניסיונות חוזרים של הורדות לאחר כשלים, הפעלה מחדש של המכשיר, ושינויים בקישוריות. עם זאת,DownloadManager
לא מציע את כל תכונות לניפוי באגים ובדיקה שזמינות ב-WorkManager
וב-JobScheduler
.- העברת נתונים למכשיר מקומי או ממנו
להשתמש ב-API ספציפי, אם יש כזה (למשל, המכשיר הנלווה). Manager); אחרת, צריך להשתמש בחזית
connectedDevice
.- המרת קידוד של מדיה
- השלמת משימה קצרה וקריטית
- עיבוד קבצים (לדוגמה, העברת נתונים לכרטיס 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 למטרה מיוחדת עבור התרחיש לדוגמה שלכם, בדרך כלל עדיף להשתמש בשירות שפועל בחזית.
שימוש בשירות החדש לעיבוד מדיה שפועל בחזית
אם צריך לעבד נתוני מדיה, אפשר להשתמש בגרסה החדשה של mediaProcessing
שירות שפועל בחזית. סוג השירות הזה זמין אם האפליקציה שלך מטרגטת ל-Android
15 ומעלה. לדוגמה, סוג השירות הזה מתאים כאשר
האפליקציה שלך צריכה להמיר מדיה מפורמט אחד לפורמט אחר כדי להפעיל אותה. עבור
מידע נוסף זמין במאמר
מסמכי תיעוד של שירות שפועל בחזית לעיבוד מדיה.
מקורות מידע נוספים
מידע נוסף על השינוי הזה בשירותים שפועלים בחזית זמין במאמרים הבאים: משאבים נוספים: