c'è un modo per lasciare notificaManager e alarmManger attivi anche quando l'app è chiusa?

-1

come mi consiglieresti di progettare un'app per Android dove voglio che sia

1) invia l'aggiornamento della posizione ogni 10 minuti

2) per mostrare la notifica push

Voglio che entrambe le azioni siano disponibili anche quando l'app è chiusa.

Qui potrei chiedere la tua spiegazione su cosa "chiuso" indica che un'app può essere in?

a) rimosso dallo stack di attività recenti - chiude l'intero processo inclusi i suoi servizi?

b) forze chiuse - chiudi l'intero processo compresi i suoi servizi?

c) altro?

Stavo usando

1) gestore allarmi che invia un intento in sospeso a un destinatario della trasmissione.

2) gestore delle notifiche

Ho provato a registrare tutti i gestori utilizzando ApplicationContext anziché il contesto Current-Activity. Ora entrambe le azioni funzionano anche dopo che l'utente ha rimosso l'app dallo stack "Attività recenti".

ma non sono sicuro degli stati "chiusi", quindi potrei mancare qualcosa.

    
posta user23621 24.03.2014 - 12:41
fonte

1 risposta

0

In realtà, non sono sicuro al 100% di ciò che stai chiedendo ma:

Se registri un PendingIntent a AlarmManager puoi affidarti al sistema per consegnare le tue intenzioni.

Se hai registrato BroadcastReciever nel Manifesto della tua app , verrà eseguito il codice nel Destinatario (Nota: considera sempre la logica effettiva in IntentService , poiché BraodcastReceiver s hanno solo circa 5 secondi per eseguire il loro lavoro!). Metti semplicemente la tua chiamata su NotificationManager qui.

Se hai registrato LocationListener utilizzando ApplicationContext , riceverà gli aggiornamenti di posizione fino a quando l'utente non "chiude" la tua app. Ma potresti programmare un'altra sveglia che registra di nuovo LocationListener.

Tuttavia, tieni presente che è necessario mantenere gli aggiornamenti della posizione su un livello moderato: scarica la batteria.

Per quanto riguarda la tua domanda sugli stati "chiusi":

  1. Un'app non è in esecuzione . Non è mai stato avviato, forza chiusa dall'utente o arrestato in modo anomalo.
  2. L'app non è visibile. L'interfaccia utente è "chiusa" ma il processo è ancora in esecuzione. Questo succede se qualcuno preme il pulsante Indietro e l'app si chiude. Il sistema potrebbe chiuderlo completamente se ha bisogno della memoria (punto 1).

Ci sono probabilmente più casi, ma questi sono i soliti.

Se AlarmManager chiama il tuo BroadcastReceiver e il tipo è RTC_WAKEUP, la tua app verrà avviata se prima era chiusa.

    
risposta data 24.03.2014 - 13:22
fonte

Leggi altre domande sui tag