ARARARDMANAGER - كيف تكرر الإنذار في الجزء العلوي من كل ساعة؟

StackOverflow https://stackoverflow.com/questions/3127351

  •  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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top