كيفية الكشف عن وضع الانتظار للتطبيقات في Android M+
للتحقق مما إذا كانت التطبيق قد دخل أو خرج من وضع الانتظار في Android M فما فوق، يمكنك استخدام الوظائف التالية:
-
isAppIdleMode()
: تحقق مما إذا كان التطبيق قد دخل في وضع الانتظار (App Standby Mode
) أو لا.مقالات ذات صلة-
تفسير رسائل Logcat Chatty في تطبيق Android29/01/2024
-
كيفية زيادة الإنتاجية أثناء العمل من المنزل24/10/2023
-
تحسين تفاعلية ListView في تطبيق Android29/03/2024
-
-
isDeviceIdleMode()
: تحقق مما إذا كان الجهاز قد دخل في وضع الانتظار (Doze Mode
) أو لا.
للقيام بذلك، يجب عليك استخدام UsageStatsManager
وPowerManager
معاً. هناك خطوات يجب اتباعها لاستخدام هاتين الوظيفتين:
- إضافة الأذونات إلى ملف
AndroidManifest.xml
:
xml<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
- التحقق مما إذا كانت الأذونة ممنوحة:
javaprivate boolean isPermissionGranted() {
AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
int mode = appOps.checkOpNoThrow(AppOpsManager.OPSTR_GET_USAGE_STATS,
android.os.Process.myUid(), getPackageName());
return mode == AppOpsManager.MODE_ALLOWED;
}
- طلب الأذن إذا لم تكن ممنوحة:
javaprivate void requestPermission() {
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
}
- استخدام
UsageStatsManager
وPowerManager
:
javaprivate boolean isAppIdle() {
UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE);
long time = System.currentTimeMillis();
List stats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);
return stats.size() == 0;
}
private boolean isDeviceIdle() {
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
return powerManager.isDeviceIdleMode();
}
- الاستفسار عن وضع الانتظار:
javaif (isAppIdle()) {
// التطبيق في وضع الانتظار
} else {
// التطبيق غير في وضع الانتظار
}
if (isDeviceIdle()) {
// الجهاز في وضع الانتظار
} else {
// الجهاز غير في وضع الانتظار
}
من المهم أن تلاحظ أنه بعد تمكين الأذن للوصول إلى الإحصائيات، قد تحتاج إلى إعادة تشغيل التطبيق لتتمكن من استخدام الوظائف السابقة.
المزيد من المعلومات
بالطبع! يمكنك استخدام الأمور التالية لمزيد من المعلومات حول وضع الانتظار للتطبيقات في Android M وما بعدها:
-
UsageStatsManager
: يتيح لك الوصول إلى إحصائيات الاستخدام للتطبيقات، بما في ذلك معرفة ما إذا كانت التطبيقات قد دخلت وخرجت من وضع الانتظار. -
PowerManager
: يسمح لك بالتحقق مما إذا كان الجهاز قد دخل في وضع الانتظار (Doze Mode
) أو لا. -
AppOpsManager
: يمكن استخدامه للتحقق من حالة أذونات النظام، مثل الوصول إلى إحصائيات الاستخدام (PACKAGE_USAGE_STATS
) التي تحتاجها لاستخدامUsageStatsManager
. -
الأذونات: يجب أن تكون قد حصلت على أذن
android.permission.PACKAGE_USAGE_STATS
لاستخدامUsageStatsManager
. -
Broadcast Receiver: يمكنك استخدامه للاستماع إلى تغييرات في وضع الانتظار باستخدام الفعل
android.os.action.DEVICE_IDLE_MODE_CHANGED
. -
مشاكل محتملة: قد تحتاج إلى إعادة تشغيل التطبيق بعد تمكين الأذن للوصول إلى إحصائيات الاستخدام.
-
تطبيق adb: يمكنك استخدام أوامر adb لإجبار التطبيق على دخول وخروج من وضع الانتظار، لكن تلك الأوامر قد لا تتعامل بشكل صحيح مع جميع الأجهزة والإصدارات.
-
وضع الانتظار الذكي (
Doze Mode
) ووضع الانتظار للتطبيقات (App Standby Mode
): يتميز كل منهما بسلوك مختلف وقد تحتاج إلى استخدام مختلف الطرق للتحقق من دخول وخروج التطبيق من كل وضع. -
استخدام الوظائف بشكل متكرر: يمكن استخدام الوظائف المذكورة بشكل دوري لمعرفة حالة وضع الانتظار للتطبيق والجهاز.
من المهم أن تضع في اعتبارك أنه يجب على التطبيقات التي تستخدم هذه الوظائف توجيه المستخدمين بشكل مناسب حول أي تأثير قد يكون لوضع الانتظار على تجربة استخدام التطبيق.