מידע על מיקום ברקע ועל חיי הסוללה

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

הגבלות על מיקום ברקע:

  • איסוף המיקום ברקע מוגבל, והמיקום מחושב ונשלח רק כמה פעמים בשעה.
  • סריקות ה-Wi-Fi מתבצעות בתדירות נמוכה יותר, ועדכוני המיקום לא מחושבים כשהמכשיר נשאר מחובר לאותה נקודת גישה סטטית.
  • התגובה של הגבולות הווירטואליים משתנה מכמה עשרות שניות לכשתי דקות. השינוי הזה משפר את ביצועי הסוללה – עד פי 10 במכשירים מסוימים.

ידע נדרש

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

קריאה נוספת

מידע נוסף זמין במאמרים הבאים:

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