Autore Topic: Servizio  (Letto 1585 volte)

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Servizio
« il: 27 Settembre 2010, 19:09:16 CEST »
0
La mia applicazione è pronta ma mi manca una funziona, quella dell'aggionarmento automatico.
Avend ogià fatto robe del genere in Java suppongo che dovrei crearmi una classe runnable e un thread ma non so dove iniziare per attivare un servizio che ogni 2- 5 - 10 minuti ( definiti dall'utente ) mi aggiorni e mi avvisi nella status bar.
Ovviamente deve funzionare anche se l'applicazione viene "nascosta" premenedo il tasto home.
Possibilmente mettendo un'icona come advance task killer  così da notificare che è attivo il servizio.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Servizio
« Risposta #1 il: 27 Settembre 2010, 19:24:23 CEST »
0
Se gli aggiornamenti avvengono ad intervalli di tempo prestabiliti potresti evitare di creare un "pesante e antipatico" servizio ed affidarti invece al più performante AlarmManager.

Riassumendo chiedi al sistema di essere avvisato ogni tot millisecondi, allo scadere del tempo prefissato parte un intent che risveglia il relativo receiver della tua applicazione.

In questo modo eviti di appesantire l'intero sistema operativo con un servizio che gira costantemente in background.

PS
È la stessa cosa che faccio io in Kitchen Timer...
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #2 il: 27 Settembre 2010, 19:50:42 CEST »
0
ma questa cosa resta attiva anche se killo l'app?

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Servizio
« Risposta #3 il: 27 Settembre 2010, 19:55:55 CEST »
0
Beh se non gestisci la cosa rimuovendo l'Alarm, sì :)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #4 il: 27 Settembre 2010, 20:01:41 CEST »
0
MA esempio pratico, sono nella mi app e premo il pulsante HOME, qui l'alarm dovrebbe funzionare ancora giusto?
Invece se termino l'app dovrebbe distruggersi pure lo scheduling, giusto?

Perchè io creerei questo allarm e quando viene chiamato lo faccio ricreare ( devo vedere se l'allarm fa un solo ciclo o se è consecutivo ), e vorrei sapere come stoppare questo servizio.

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Servizio
« Risposta #5 il: 27 Settembre 2010, 20:07:17 CEST »
0
Per rimuoverlo basta utilizzare public void cancel (PendingIntent operation).
Sta a te richiamarlo al momento giusto, cioè quando la tua applicazione termina.

Se non lo annulli esplicitamente ovviamente non si annulla da solo all'uscita dell'app (serve proprio ad evitare questo comportamento).

Comunque forse ho frainteso il topic: tu non vuoi creare un servizio che rimane attivo h24, sempre presente anche se la app è chiusa, tu vuoi che rimanga in background solo se la app è aperta (anche se in background), giusto? In questo caso il servizio potrebbe andar bene...
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #6 il: 27 Settembre 2010, 20:09:49 CEST »
0
Nono va bene questa soluzione, deve rimanere attivo quando ho aperto l'app e quando premo il tasto HOME
Preferibilmente resti fuori un'icona nella status bar da notificare che è in esecuzione.
Poi  se lo si vuole terminare si fa "menu => exit"

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Servizio
« Risposta #7 il: 27 Settembre 2010, 20:10:43 CEST »
0
Prova Kitchen Timer, fa esattamente quello che ti serve, compresa l'icona di notifica ;)
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #8 il: 27 Settembre 2010, 20:18:20 CEST »
0
Qua hai usato AlarmManager giusto?

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Servizio
« Risposta #9 il: 27 Settembre 2010, 20:20:03 CEST »
0
Sì, ma non ho capito se con questa frase:
Nono va bene questa soluzione, deve rimanere attivo quando ho aperto l'app e quando premo il tasto HOME
preferisci l'AlarmManager o il servizio :P
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #10 il: 27 Settembre 2010, 20:26:44 CEST »
0
Beh, la cosa piu semplice e meno complicata.
Perchè questa app aggiorna da un sito internet i radar,blocchi, traffico , ecc da un sio internet ( funziona solo in Svizzera) e sarebbe bello che ogni 5 minuti controlla se ci sono nuovi aggiornamenti.
Questo anche se non hai l'applicazione in primo piano, visto che molte persone lo tengono in auto e non voglio avere l'applicazione attiva.
Se ci sono nuovi aggiornamenti dovrebbe vibbrare, suonare e avvertire con un messaggio nella status bar.

Perciò non so se è meglio un servizio o un alarmmanager, suppongo che la seconda sia piu fattibile ma non so quanto sia piu pesante un servizio.

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #11 il: 18 Ottobre 2010, 18:19:13 CEST »
0
Normale che  l'alarmmanager resta attivo anche dopo il kill dell'applicazione?
ho settato il setRepeating, devo salvare l'oggetto e quando premo "Esci" fermare il tutto?

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:Servizio
« Risposta #12 il: 21 Ottobre 2010, 08:49:32 CEST »
0
Normale che  l'alarmmanager resta attivo anche dopo il kill dell'applicazione?
ho settato il setRepeating, devo salvare l'oggetto e quando premo "Esci" fermare il tutto?

Si, come ti diceva JD poco sopra, l'alarm devi rimuoverlo manualmente all'uscita.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline max246

  • Utente junior
  • **
  • Post: 73
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    G1
  • Play Store ID:
    Christian
Re:Servizio
« Risposta #13 il: 21 Ottobre 2010, 11:47:27 CEST »
0
Si, come ti diceva JD poco sopra, l'alarm devi rimuoverlo manualmente all'uscita.
Ah :/ pensavo che intedeva che veniva killato assieme all'applicazione, un metodo per controllare se è ancora attivo?

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:Servizio
« Risposta #14 il: 21 Ottobre 2010, 12:22:19 CEST »
0
Per rispondere alla tua domanda: sinceramente non ho mai provato, ma proverei ad usare alarmManager.cancel senza sapere se è attivo o meno.

Poi ti aggiungo una nota che è stata evidenziata in grassetto direttamente nella documentazione ufficiale della classe AlarmManager | Android Developers

Note: The Alarm Manager is intended for cases where you want to have your application code run at a specific time, even if your application is not currently running. For normal timing operations (ticks, timeouts, etc) it is easier and much more efficient to use Handler.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store