Oto kod, który można ustawić alarm dla mojego widget:PendingIntent zaplanowane przy użyciu typu AlarmManager.RTC nadal powoływać się w trybie uśpienia
private static void setAlarm(Context context) {
Intent myIntent = new Intent(context, Widget.class);
myIntent.setAction(AUTO_UPDATE);
PendingIntent pendingIntent =
PendingIntent.getBroadcast(context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Service.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 8);
alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), 8000,
pendingIntent);
}
ale problemem jest to, że nawet w trybie uśpienia, onReceive()
jest nadal wyzwalane przez zamiar.
Chociaż po użyciu setInexactRepeating
zamiast setRepeating
, opóźnienia między połączeniami zwiększają się do 1 minuty w trybie uśpienia, ale nadal zużywają dużo energii.
jakie jest twoje pytanie? – HitOdessit
'AlarmManager.RTC' nie powinien wywoływać urządzenia w trybie uśpienia! Co powinienem zrobić, aby uniknąć wywoływania? – SAbbasizadeh
co to są wersje systemu operacyjnego Android i urządzenia/emulatory, na których testujesz swój kod? – HitOdessit