Autore Topic: esecuzione funzione al di fuori di un'activity  (Letto 531 volte)

Offline sika

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P500 (Optimus One)
  • Sistema operativo:
    OSX 10.6
esecuzione funzione al di fuori di un'activity
« il: 13 Novembre 2011, 23:07:40 CET »
0
Ciao a tutti.
Vorrei che la mia app permetta creare notifiche sulla status bar a seconda del verificarsi o meno di una condizione, e che tale condizione venga valutata in 3 occasioni:

- lancio dell'app;
- temporizzata ogni x ore;
- all'avvio del sistema.

Come posso far si che tale controllo avvenga in questo modo?

grazie 1000!!! ;-)
« Ultima modifica: 13 Novembre 2011, 23:10:02 CET da sika »

Offline salvatore cino

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy s i9000
  • Play Store ID:
    wb apps
  • Sistema operativo:
    ubuntu 11.04
R: esecuzione funzione al di fuori di un'activity
« Risposta #1 il: 14 Novembre 2011, 08:12:29 CET »
0
Prova a googlare un po ricercando broadcast receiver per la 1 e la 3 mentre cerca Alarm manager per la 2

Inviato dal mio GT-I9000 usando Tapatalk

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:esecuzione funzione al di fuori di un'activity
« Risposta #2 il: 14 Novembre 2011, 08:31:43 CET »
0
Più in dettaglio, per la 3 devi gestire in un BroadcastReceiver l'evento BOOT_COMPLETED.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline sika

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P500 (Optimus One)
  • Sistema operativo:
    OSX 10.6
Re:R: esecuzione funzione al di fuori di un'activity
« Risposta #3 il: 14 Novembre 2011, 13:59:52 CET »
0
Prova a googlare un po ricercando broadcast receiver per la 1 e la 3 mentre cerca Alarm manager per la 2

Inviato dal mio GT-I9000 usando Tapatalk

per la 2, l'app può anche non essere lanciata? (ovvero...mi diventa un processo in background?)

Offline sika

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P500 (Optimus One)
  • Sistema operativo:
    OSX 10.6
Re:esecuzione funzione al di fuori di un'activity
« Risposta #4 il: 15 Novembre 2011, 17:29:10 CET »
0
ok...ora con il broadcast Receiver riesco a lanciare notifiche all'avvio del sistema...ora sto analizzando il caso del lancio della notifica ogni x ore. nella fattispecie, la condizione di lancio della notifica deve essere valutata ogni cambio di giorno. Devo usare Alarm manager + Service, o posso riutilizzare il broadcast receiver già implementato e funzionante?

Offline sika

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P500 (Optimus One)
  • Sistema operativo:
    OSX 10.6
Re:esecuzione funzione al di fuori di un'activity
« Risposta #5 il: 17 Novembre 2011, 15:13:13 CET »
0
potrei utilizzare ACTION_DATE_CHANGED?

Offline sika

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg P500 (Optimus One)
  • Sistema operativo:
    OSX 10.6
Re:esecuzione funzione al di fuori di un'activity
« Risposta #6 il: 18 Novembre 2011, 11:23:14 CET »
0
Ok...sono riuscito sistemare la situazione, utilizzando l'Alarmmanager (settato con setRepeating()) in modo da lanciarmi ad ogni mezzanotte il broadcast receiver in questo modo:

Codice: [Seleziona]
       
AlarmManager am = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), MyReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

Ho una domanda: ho inserito la creazione dell'alarmManager nell'activity principale, solo che questo comporta che viene reistanziato ogni volta (e, non capisco perchè, il broadcast viene in questa fase anche lanciato). E' possibile fare un controllo per vedere se l'AlarmManager stato già settato, tipo tramite qualche funzione di tipo isSet() messe a disposizione dalla classe o simili?

Grazie 1000!