تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكن أن يؤثّر استخدام الموقع الجغرافي في الخلفية بشكل كبير في عمر البطارية. يتيح نظام التشغيل Android تحديد حدود لجمع بيانات الموقع الجغرافي في الخلفية، ما يحثّ المطوّرين على تحسين تطبيقاتهم لزيادة كفاءة البطارية. وتفيد هذه التحسينات
جميع الأجهزة، بغض النظر عن إصدار Android الذي تعمل
عليه.
يتمّ الحدّ من جمع بيانات الموقع الجغرافي في الخلفية ويتم احتساب الموقع الجغرافي ونقله
بضع مرّات في الساعة فقط.
تكون عمليات البحث عن شبكات Wi-Fi أكثر تحفّظًا، ولا يتم احتساب تعديلات الموقع الجغرافي عندما
يظل الجهاز متصلاً بنقطة الوصول الثابتة نفسها.
تتغيّر سرعة استجابة وضع "الحدّ الجغرافي" من عشرات الثواني إلى دقائق
تقريبًا. يؤدي هذا التغيير إلى تحسين أداء البطارية، ويصل تحسين الأداء إلى عشرة أضعاف على بعض الأجهزة.
المعرفة المطلوبة
يفترض هذا المستند معرفة واجهات برمجة التطبيقات التالية:
موفِّر الموقع المدمج: تجمع واجهة برمجة التطبيقات هذه إشارات من نظام تحديد المواقع العالمي (GPS)
وشبكة Wi-Fi وشبكات الجوّال، بالإضافة إلى مقياس التسارع والجيروسكوب ومقياس المغناطيسية وغيرها من أدوات الاستشعار.
الحدّ الجغرافي: تم إنشاء واجهة برمجة التطبيقات هذه استنادًا إلى 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 المواقع الجغرافية بشكل سلبي من تطبيقات أخرى
سبق أن تم احتساب موقعها الجغرافي.
استخدِم خيارَي "الطاقة المتوازنة" أو "الطاقة المنخفضة" لتلبية احتياجات المواقع الجغرافية ل
معظم التطبيقات. يجب حجز الدقة العالية للتطبيقات التي تعمل في المقدّمة وتتطلّب تعديلات الموقع الجغرافي في
الوقت الفعلي (مثل تطبيق الخرائط).
التردد
يمكنك تحديد معدّل تكرار عرض الإعلانات حسب الموقع الجغرافي باستخدام طريقتَين:
استخدِم طريقة setIntervalMillis() لتحديد الفاصل الزمني لحساب الموقع الجغرافي لتطبيقك.
نقْل أكبر قيمة ممكنة عند استخدام setIntervalMillis() وينطبق ذلك
بشكل خاص على جمع بيانات الموقع الجغرافي في الخلفية، ما يؤدي غالبًا إلى استهلاك
البطارية. احجز فواصل زمنية تبلغ بضع ثوانٍ لحالات الاستخدام التي تعمل في المقدّمة.
تفرض حدود الموقع الجغرافي في الخلفية التي تم تقديمها في Android 8.0 (مستوى واجهة برمجة التطبيقات 26)
هذه الاستراتيجيات، ولكن يجب أن يسعى تطبيقك إلى فرضها على الأجهزة التي تعمل بالإصدار
Android 7.0 (مستوى واجهة برمجة التطبيقات 24) والإصدارات الأقدم.
استغرق الرد وقتًا طويلاً
يمكنك تحديد وقت الاستجابة باستخدام طريقة setMaxUpdateDelayMillis()،
وعادةً ما يتم ضبط قيمة أكبر بعدة مرات من الفاصل الزمني
المحدّد في طريقة setIntervalMillis(). يؤدّي هذا الإعداد إلى تأخير
إرسال الموقع الجغرافي، وقد يتم إرسال عدّة تعديلات على الموقع الجغرافي في مجموعات.
يساعد هذان التغييران في تقليل استهلاك البطارية.
إذا لم يكن تطبيقك بحاجة إلى تحديث الموقع الجغرافي على الفور، يجب تمرير
القيمة الأكبر الممكنة إلى طريقة setMaxUpdateDelayMillis()، ما يؤدي إلى
تقليل وقت الاستجابة بشكل فعّال للحصول على المزيد من البيانات وكفاءة البطارية.
عند استخدام حدود جغرافية، يجب أن تُرسل التطبيقات قيمة كبيرة إلى أسلوب
setNotificationResponsiveness() للحفاظ على الطاقة. ننصحك باستخدام قيمة تبلغ
خمس دقائق أو أكثر.
مراجع إضافية
لمزيد من المعلومات، يُرجى الاطّلاع على المستندات التالية:
الاقتراحات: يوضّح هذا الدليل بعض الخطوات المقترَحة الملموسة
التي يمكنك اتّخاذها لتحسين تأثير تطبيقك في عمر البطارية.
حالات الاستخدام: يقدّم هذا الدليل العديد من حالات الاستخدام الشائعة
التي قد تستخدم فيها خدمات الموقع الجغرافي وكيفية تحسين تأثيرها
في عمر البطارية لهذه الحالات.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# About background location and battery life\n\nBackground location usage can significantly impact battery life. Android\nsupports limits to background location gathering, prompting developers to\noptimize their applications for better battery efficiency. These optimizations\nare beneficial for all devices, regardless of the Android version they are\nrunning.\n\nWith [Background Location Limits](/about/versions/oreo/background-location-limits):\n\n- Background location gathering is throttled and location is computed, and delivered only a few times an hour.\n- Wi-Fi scans are more conservative, and location updates aren't computed when the device stays connected to the same static access point.\n- Geofencing responsiveness changes from tens of seconds to approximately two minutes. This change improves battery performance---up to 10 times better on some devices.\n\n| **Note:** These features were first introduced with Android 8.0 (API level 26).\n\nRequired knowledge\n------------------\n\nThis document assumes familiarity with the following APIs:\n\n- [Google Location Services.](https://developers.google.com/android/reference/com/google/android/gms/location/package-summary.html) These APIs offer higher accuracy and impose a lighter battery burden than the [framework location APIs](/reference/android/location/package-summary).\n- [Fused Location Provider.](https://developers.google.com/location-context/fused-location-provider/) This API combines signals from GPS, Wi-Fi, and cell networks, as well as accelerometer, gyroscope, magnetometer and other sensors.\n- [Geofencing](https://developers.google.com/location-context/geofencing/), This API is built on top of the Fused Location Provider API, and is optimized for battery performance.\n\nUnderstand battery drain\n------------------------\n\nLocation gathering and battery drain are related as follows:\n\n- **Accuracy:** The precision of the location data. In general, the higher the accuracy, the higher the battery drain.\n- **Frequency:** How often location is computed. The more frequent location is computed, the more battery is used.\n- **Latency:** How quickly location data is delivered. Less latency usually requires more battery.\n\n### Accuracy\n\nYou can specify location accuracy using the [`setPriority()`](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.Builder#public-locationrequest.builder-setpriority-int-priority) method, passing\none of the following values as the argument:\n\n- [`PRIORITY_HIGH_ACCURACY`](https://developers.google.com/android/reference/com/google/android/gms/location/Priority#public-static-final-int-priority_high_accuracy) provides the most accurate location possible, which is computed using as many inputs as necessary (it enables GPS, Wi-Fi, and cell, and uses a variety of [Sensors](/guide/topics/sensors/sensors_overview)), and may cause significant battery drain.\n- [`PRIORITY_BALANCED_POWER_ACCURACY`](https://developers.google.com/android/reference/com/google/android/gms/location/Priority#public-static-final-int-priority_balanced_power_accuracy) provides accurate location while optimizing for power. Very rarely uses GPS. Typically uses a combination of Wi-Fi and cell information to compute device location.\n- [`PRIORITY_LOW_POWER`](https://developers.google.com/android/reference/com/google/android/gms/location/Priority#public-static-final-int-priority_low_power) largely relies on cell towers and avoids GPS and Wi-Fi inputs, providing coarse (city-level) accuracy with minimal battery drain.\n- [`PRIORITY_NO_POWER`](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.html#PRIORITY_NO_POWER) receives locations passively from other apps for which location has already been computed.\n\nUse the balanced power or low power options to satisfy the location needs of\nmost apps. Reserve high accuracy for apps that run in the foreground and require\n*real time* location updates (for example, a mapping app).\n\n### Frequency\n\nYou can specify location frequency using two methods:\n\n- Use the [`setIntervalMillis()`](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.Builder#public-locationrequest.builder-setintervalmillis-long-intervalmillis) method to specify the interval for computing your app's location.\n- Use the [`setMinUpdateIntervalMillis()`](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.Builder#public-locationrequest.builder-setminupdateintervalmillis-long-minupdateintervalmillis) method to specify the interval for receiving other apps' locations.\n\nPass the largest possible value when using `setIntervalMillis()`. This is\nespecially true for background location gathering, which often drains the\nbattery. Reserve intervals of a few seconds for foreground use cases.\n\nThe background location limits introduced in Android 8.0 (API level 26) enforce\nthese strategies, but your app should strive to enforce them on devices running\nAndroid 7.0 (API level 24) and lower.\n\n### Latency\n\nYou can specify latency using the [`setMaxUpdateDelayMillis()`](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.Builder#public-locationrequest.builder-setmaxupdatedelaymillis-long-maxupdatedelaymillis) method,\ntypically passing a value that is several times larger than the interval\nspecified in the [`setIntervalMillis()`](https://developers.google.com/android/reference/com/google/android/gms/location/LocationRequest.Builder#public-locationrequest.builder-setintervalmillis-long-intervalmillis) method. This setting delays\nlocation delivery, and multiple location updates may be delivered in batches.\nThese two changes help minimize battery consumption.\n\nIf your app doesn't immediately need a location update, you should pass the\nlargest possible value to the `setMaxUpdateDelayMillis()` method, effectively\ntrading latency for more data and battery efficiency.\n\nWhen using geofences, apps should pass a large value into the\n[`setNotificationResponsiveness()`](https://developers.google.com/android/reference/com/google/android/gms/location/Geofence.Builder.html#setNotificationResponsiveness(int)) method to preserve power. A value of\nfive minutes or larger is recommended.\n\nFurther reading\n---------------\n\nFor more information, see the following documents:\n\n- [Recommendations](/develop/sensors-and-location/location/battery/optimize): This guide lays out some concrete recommended actions you can use to improve your app's impact on battery life.\n- [Use cases](/develop/sensors-and-location/location/battery/scenarios): This guide provides several common use cases where you might use location services and how you could optimise the impact on battery life for those cases."]]