שימוש במיקום ברקע יכול להשפיע באופן משמעותי על חיי הסוללה. ב-Android יש תמיכה בהגבלת איסוף המיקום ברקע, והמפתחים מתבקשים לבצע אופטימיזציה של האפליקציות שלהם כדי לשפר את יעילות הסוללה. האופטימיזציות האלה מועילות לכל המכשירים, בלי קשר לגרסת Android שמותקנת בהם.
- איסוף המיקום ברקע מוגבל, והמיקום מחושב ונשלח רק כמה פעמים בשעה.
- סריקות ה-Wi-Fi מתבצעות בתדירות נמוכה יותר, ועדכוני המיקום לא מחושבים כשהמכשיר נשאר מחובר לאותה נקודת גישה סטטית.
- התגובה של הגבולות הווירטואליים משתנה מכמה עשרות שניות לכשתי דקות. השינוי הזה משפר את ביצועי הסוללה – עד פי 10 במכשירים מסוימים.
ידע נדרש
המסמך הזה מניח שאתם מכירים את ממשקי ה-API הבאים:
- שירותי המיקום של Google. ממשקי ה-API האלה מספקים דיוק גבוה יותר וצורכים פחות סוללה מאשר ממשקי ה-API של המיקום במסגרת.
- ספק מיקום משולב (FLP). ה-API הזה משלב אותות מ-GPS, מ-Wi-Fi ומרשתות סלולריות, וגם ממד תאוצה, מג'ירוסקופ, ממגנטומטר ומחיישנים אחרים.
- גבולות וירטואליים, ה-API הזה מבוסס על Fused Location Provider API, והוא מותאם לביצועי הסוללה.
הסבר על התרוקנות הסוללה
הקשר בין איסוף נתוני מיקום לבין התרוקנות הסוללה:
- דיוק: רמת הדיוק של נתוני המיקום. באופן כללי, ככל שהדיוק גבוה יותר, כך הסוללה מתרוקנת מהר יותר.
- תדירות: באיזו תדירות המיקום מחושב. ככל שהמיקום מחושב בתדירות גבוהה יותר, כך צריכת הסוללה גדלה.
- זמן אחזור: כמה מהר נתוני המיקום נשלחים. בדרך כלל, זמן אחזור קצר יותר דורש יותר סוללה.
דיוק
כדי לציין את רמת הדיוק של זיהוי המיקום המשופר, משתמשים ב-method setPriority() ומעבירים את אחד מהערכים הבאים כארגומנט:
PRIORITY_HIGH_ACCURACYמספק את המיקום המדויק ביותר שאפשר, שמחושב באמצעות כמה שיותר מקורות קלט (הוא מפעיל GPS, Wi-Fi ורשת סלולרית, ומשתמש במגוון חיישנים), ועלול לגרום להתרוקנות משמעותית של הסוללה.PRIORITY_BALANCED_POWER_ACCURACYמספק מיקום מדויק תוך אופטימיזציה של צריכת החשמל. משתמשת ב-GPS לעיתים רחוקות מאוד. בדרך כלל משתמש בשילוב של מידע על Wi-Fi ורשת סלולרית כדי לחשב את מיקום המכשיר.PRIORITY_LOW_POWERמסתמך בעיקר על מגדלי תקשורת ונמנע משימוש ב-GPS וב-Wi-Fi, וכך מספק דיוק גס (ברמת העיר) עם ניצול מינימלי של הסוללה.-
PRIORITY_PASSIVEמקבלת מיקומים באופן פסיבי מאפליקציות אחרות שכבר חישבו את המיקום.
כדי לענות על צורכי המיקום של רוב האפליקציות, השתמשו באפשרויות "צריכת חשמל מאוזנת" או "צריכת חשמל נמוכה". שמרו את רמת הדיוק הגבוהה לאפליקציות שפועלות בחזית ודורשות עדכוני מיקום בזמן אמת (לדוגמה, אפליקציית מפות).
תדירות
אפשר לציין את תדירות המיקום בשתי שיטות:
- משתמשים ב-method
setIntervalMillis()כדי לציין את המרווח לחישוב המיקום של האפליקציה. - משתמשים ב-method
setMinUpdateIntervalMillis()כדי לציין את המרווח לקבלת המיקומים של אפליקציות אחרות.
כשמשתמשים ב-setIntervalMillis(), צריך להעביר את הערך הגדול ביותר האפשרי. זה נכון במיוחד לגבי איסוף מיקום ברקע, שלעיתים קרובות מרוקן את הסוללה. שמרו מרווחים של כמה שניות לתרחישים לדוגמה של שירותים שפועלים בחזית.
המגבלות על מיקום ברקע שהוצגו ב-Android 8.0 (רמת API 26) אוכפות את האסטרטגיות האלה, אבל כדאי לנסות לאכוף אותן באפליקציה גם במכשירים עם Android 7.0 (רמת API 24) ומטה.
זמן אחזור
אפשר לציין את זמן האחזור באמצעות ה-method setMaxUpdateDelayMillis(), ובדרך כלל מעבירים ערך שגדול פי כמה מהמרווח שצוין ב-method setIntervalMillis(). ההגדרה הזו מעכבת את שליחת המיקום, ויכול להיות שכמה עדכונים לגבי מיקום יישלחו בקבוצות.
שני השינויים האלה עוזרים לצמצם את צריכת הסוללה.
אם האפליקציה לא צריכה עדכון לגבי מיקום באופן מיידי, כדאי להעביר את הערך הגדול ביותר האפשרי ל-method setMaxUpdateDelayMillis(), כדי להחליף את זמן האחזור בנתונים נוספים וביעילות הסוללה.
כשמשתמשים בגבולות וירטואליים, האפליקציות צריכות להעביר ערך גדול ל-method setNotificationResponsiveness() כדי לחסוך בסוללה. מומלץ להגדיר ערך של חמש דקות או יותר.
קריאה נוספת
מידע נוסף זמין במאמרים הבאים:
- המלצות: במדריך הזה מפורטות כמה פעולות מומלצות וקונקרטיות שיכולות לעזור לכם לשפר את ההשפעה של האפליקציה על חיי הסוללה.
- תרחישים לדוגמה: במדריך הזה מפורטים כמה תרחישים נפוצים שבהם אתם עשויים להשתמש בשירותי מיקום, ואיך אתם יכולים לשפר את ההשפעה על חיי הסוללה במקרים האלה.