כדי לשפר את ההשפעה של האפליקציה על חיי הסוללה של המכשיר כשמשתמשים בשירותי המיקום, כדאי לבצע את הפעולות הבאות.
הסרת עדכוני המיקום
מקור נפוץ לירידה לא נחוצה בחיי הסוללה הוא אי-הסרה של עדכוני מיקום כשאין בהם יותר צורך.
מצב כזה יכול לקרות אם שיטות מחזור החיים onStart()
או onResume()
של הפעילות מכילות קריאה ל-requestlocationUpdates()
בלי קריאה תואמת ל-removeLocationUpdates()
בשיטות מחזור החיים onPause()
או onStop()
.
אפשר להשתמש ברכיבים מודעים למחזור חיים כדי לנהל טוב יותר את מחזור החיים של הפעילויות באפליקציה. מידע נוסף זמין במאמר טיפול במחזורי חיים באמצעות רכיבים מודעים למחזור חיים.
הגדרת זמן קצוב לתפוגה
כדי למנוע שחיקה של הסוללה, כדאי להגדיר זמן קצוב סביר שבו עדכוני המיקום יפסיקו. הזמן הקצוב מאפשר לוודא שהעדכונים לא ימשיכו ללא הגבלת זמן, ומגן על האפליקציה בתרחישים שבהם מתבקשים עדכונים אבל הם לא מוסרים (לדוגמה, בגלל באג בקוד).
כדי להוסיף זמן קצוב לתפוגה לבקשה של ספק מיקום משולב, צריך לבצע קריאה ל-setExpirationDuration()
, שמקבלת פרמטר שמייצג את הזמן במילישניות מאז הקריאה האחרונה לשיטה. אפשר גם להוסיף זמן קצוב לתפוגה על ידי קריאה ל-setExpirationTime()
, שמקבלת פרמטר שמייצג את זמן התפוגה במילישניות מאז ההפעלה האחרונה של המערכת.
כדי להוסיף זמן קצוב לתפוגה לבקשת מיקום של גדר גיאוגרפית, צריך לבצע קריאה ל-method setExpirationDuration()
.
בקשות באצווה
בכל תרחישי השימוש שאינם בחזית, כדאי לשלוח כמה בקשות באצווה. משתמשים ב-method setInterval()
כדי לציין את מרווח הזמן שבו רוצים לחשב את המיקום. לאחר מכן, משתמשים בשיטה setMaxWaitTime()
כדי להגדיר את המרווח שבו המיקום יישלח לאפליקציה. מעבירים לשיטה setMaxWaitTime()
ערך שהוא מכפיל של הערך שמעבירים לשיטה setInterval()
. לדוגמה, נניח את בקשת המיקום הבאה:
Kotlin
val request = LocationRequest()
request.setInterval(10 * 60 * 1000)
request.setMaxWaitTime(60 * 60 * 1000)
Java
LocationRequest request = new LocationRequest();
request.setInterval(10 * 60 * 1000);
request.setMaxWaitTime(60 * 60 * 1000);
במקרה כזה, המערכת מחשבת את המיקום בערך כל עשר דקות ומספקת כ-6 נקודות נתונים של מיקום בקבוצה (batch) בערך כל שעה. עדיין תקבלו עדכוני מיקום כל 10 דקות בערך, אבל תוכלו לחסוך בחיי הסוללה כי המכשיר יתעורר רק כל שעה בערך.
שימוש בעדכוני מיקום פסיביים
בתרחישי שימוש ברקע, מומלץ להגביל את עדכוני המיקום. הגבלות ב-Android 8.0 (רמת API 26) אוכפות את השימוש בשיטה הזו, אבל אפליקציות שפועלות במכשירים עם גרסה ישנה יותר צריכות לנסות להגביל את הגישה למיקום ברקע ככל האפשר.
סביר להניח שבזמן שהאפליקציה שלכם פועלת ברקע, אפליקציה אחרת מבקשת לעתים קרובות עדכוני מיקום בחזית. שירותי המיקום מאפשרים לאפליקציה שלכם לקבל את העדכונים האלה. נסו לדמיין את בקשת המיקום הבאה, שמנצלת הזדמנויות כדי לצרוך נתוני מיקום:
Kotlin
val request = LocationRequest()
request.setInterval(15 * 60 * 1000)
request.setFastestInterval(2 * 60 * 1000)
Java
LocationRequest request = new LocationRequest();
request.setInterval(15 * 60 * 1000);
request.setFastestInterval(2 * 60 * 1000);
בדוגמה הקודמת, המיקום של האפליקציה מחושב בערך כל 15 דקות. אם אפליקציות אחרות מבקשות את המיקום, האפליקציה מקבלת את הנתונים במרווח זמן מקסימלי של שתי דקות.
אמנם שימוש פסיבי במיקום לא גורם לירידה ברמת הטעינה של הסוללה, אבל חשוב להיזהר במקרים שבהם קבלת נתוני המיקום מפעילה פעולות יקרות של מעבד או קלט/פלט. כדי למזער את עלויות הסוללה, מרווח הזמן שצוין ב-setFastestInterval()
לא צריך להיות קטן מדי.