تكرار السؤال: …
الإجابة المختصرة
باستخدام وحدة AppState للاستماع إلى تحولات حالة التطبيق بين العمل في الواجهة (active) أو الانتقال للخلفية (background) لإيقاف المؤقتات والتتبع المكلف للحفاظ على بطارية الهاتف.
الشرح
عندما يغادر المستخدم التطبيق أو يستقبل مكالمة هاتفية، ينتقل التطبيق إلى وضع "inactive" ثم "background". من الضروري إيقاف اشتراكات تحديد الموقع (GPS)، وتجميد مؤقتات setInterval، وتشفير البيانات الحساسة على الشاشة لمنع ظهورها في لقطات مبدل التطبيقات (App Switcher).
مثال بالكود
import { useEffect } from 'react';
import { AppState, AppStateStatus } from 'react-native';
function useAppStateListener() {
useEffect(() => {
const subscription = AppState.addEventListener('change', (nextState: AppStateStatus) => {
if (nextState === 'background') {
// إيقاف خدمات التتبع المكلفة وحفظ المسودات فوراً
stopLiveTracking();
}
});
return () => subscription.remove();
}, []);
}أخطاء شائعة
- الاستمرار في استهلاك طلبات الـ Polling وتحديد الموقع بعد انتقال التطبيق إلى وضع الخلفية مما يسبب استنزاف البطارية وإغلاق النظام للتطبيق قسراً.