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