Autore Topic: API 19 - impostare un allarme  (Letto 505 volte)

Offline crbin1

  • Utente junior
  • **
  • Post: 61
  • Respect: +6
    • labeltodo
    • Mostra profilo
    • Do Androids Dream of Electric Sheep?
  • Dispositivo Android:
    Galaxy Nexus
API 19 - impostare un allarme
« il: 14 Novembre 2013, 14:40:51 CET »
0
Aumentando il targetSdkVersion a 19 nella mia applicazione per supportare anche KitKat ho avuto due dubbi / problemi, siccome riguardano due problemi diversi apro due thread.

Il primo riguarda gli allarmi, leggo qua http://developer.android.com/about/versions/android-4.4.html:

Citazione
When you set your app's targetSdkVersion to "19" or higher, alarms that you create using either set() or setRepeating() will be inexact.
...
This inexact batching behavior applies only to updated apps. If you've set the targetSdkVersion to "18" or lower, your alarms will continue behave as they have on previous versions when running on Android 4.4.

Naturalmente se io ho targetSdkVersion=19 ma l'applicazione gira su una versione precedente avrò lo stesso comportamento di prima, corretto?

Questo è il codice usato per  adeguarmi alla modifica, è corretto secondo voi?

Codice (Java): [Seleziona]
private void setAlarm (long ms){
    final AlarmManager am = (AlarmManager) mCtx.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, BroadcastReceiverAlarm.class);
    PendingIntent pi = PendingIntent.getBroadcast(this, ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    if (Build.VERSION.SDK_INT<Build.VERSION_CODES.KITKAT) {
        am.set(AlarmManager.RTC, ms, pi);
    } else {
        setAlarmFromKitkat(am, ms, pi);
    }
}

@TargetApi(19)
private void setAlarmFromKitkat(AlarmManager am, long ms, PendingIntent pi){
    am.setExact(AlarmManager.RTC, ms, pi);
}