Autore Topic: Problema AlarmManager Broadcast Receiver e Service  (Letto 581 volte)

Offline bart

  • Utente junior
  • **
  • Post: 133
  • Respect: 0
    • highlanderteam
    • BBartsv
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy tab
  • Play Store ID:
    barth
  • Sistema operativo:
    ubuntu 11.04,mac os leopard,windows7
Problema AlarmManager Broadcast Receiver e Service
« il: 25 Settembre 2013, 23:33:04 CEST »
0
Buonasera a tutti,
ho un dubbio che non riesco a colmare,io ho creato un applicazione che ogni mezz'ora controlla se vi sono aggiornamenti nel mio database remoto e per fare questo ho usato un alarm manager che viene creato nell'activity principale e si registra ad un BroadcastReceiver che attiva il Service che controlla se vi sono aggiornamenti ed in caso affermativo li scarica ed avvisa l'utente con una notifica.La cosa che non capisco è come mai dopo un certo periodo di 8-9 giorni sembra che il service non viene più attivato
Codice (Java): [Seleziona]
private void setAlarm(){
                 AlarmManager al = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
              int alType = AlarmManager.RTC_WAKEUP;
              Calendar now = Calendar.getInstance();
              String ALARM_ACTION = "org.me.MonesiYoung.NOTIFICA";
              Log.i("", "sec allarme");
              Intent intentToFire = new Intent(ALARM_ACTION);
              PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,intentToFire,0);
              al.setRepeating(alType, now.getTimeInMillis()+1000*60*30,1000*60*120, pendingIntent);
             
         }
Broadcast Receiver
Codice (Java): [Seleziona]
public class BR extends BroadcastReceiver {

        @Override
        public void onReceive(Context arg0, Intent arg1) {
                // TODO Auto-generated method stub
                Log.i("", "ricevuti");
                 PowerManager pm = (PowerManager) arg0.getSystemService(Context.POWER_SERVICE);
         PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
         wl.acquire();    
         Intent intent = new Intent(arg0, Ora.class);
         arg0.startService(intent);
         //qui va il codice che devi eseguire
         wl.release();
        }

}
ed ho messo nel Manifest i permessi
Codice (XML): [Seleziona]
<service android:name="org.me.serviceMY.Ora" />

        <receiver android:name="org.me.serviceMY.BR" >
            <intent-filter>
                <action android:name="org.me.MonesiYoung.NOTIFICA" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.HOME" />
            </intent-filter>
        </receiver>

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

grazie in anticipo a tutti voi!

Post unito: 26 Settembre 2013, 10:21:33 CEST
forse ho capito,io nel Service alla fine delle operazioni che dovevo eseguire richiamavo stopSelf() e lo interrompevo in modo da non sprecare memoria e forse dopo un po' non viene più attivato perdendo così l'aggiornamento automatico dei dati...
grazie
« Ultima modifica: 26 Settembre 2013, 10:21:33 CEST da bart, Reason: Merged DoublePost »