ARARARDMANAGER - كيف تكرر الإنذار في الجزء العلوي من كل ساعة؟
-
30-09-2019 - |
سؤال
أريد أن تطلق حدثًا كل ساعة (الساعة 5:00 ، 6:00 ، 7:00 ، إلخ ...). حاولت مع خدمة خلفية مستمرة مع موضوع ولكن لم يكن الحل الصحيح بسبب:
- استهلاك البطارية
- إنهاء الخدمة ، بسبب إدارة ذاكرة Android
لذلك أنا أحاول مع الإنذار. إنه يعمل إذا قمت بتعيين إنذار لإطلاق النار في X Seconds (باستخدام طريقة "SET"). ولكن كيف يمكنني تكرار حدث (باستخدام طريقة "setrepeating") في الجزء العلوي من كل ساعة ، حتى يتم إلغاء المنبه؟
شكرًا!
المحلول
عندما تقوم بتعيين الإنذارات لديك مرتين: وقت الزناد الأول ، وفاصل الزناد التالي.
عليك بعد ذلك حساب العليا المتبقية إلى الجزء العلوي التالي من الساعة ، ثم تعيين ساعة واحدة للفاصل الزمني المتكرر.
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
firstTime += remainingMilisecondsToTopHour;
long a=c.getTimeInMillis();
// Schedule the alarm!
AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME,
c.getTimeInMillis(), 1*60*60*1000, sender);
لا تنتمي إلى StackOverflow