Autore Topic: Run activity in backgorund  (Letto 671 volte)

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Run activity in backgorund
« il: 24 Marzo 2014, 13:55:56 CET »
0
Salve a tutti.

Vorrei un consiglio su cosa guardare/studiare per trovare una soluzione al mio problema.

Ho implementato un semplice timer con due pulsanti START/STOP.

Funziona perfettamente con l'app in foreground.

Vorrei fare in modo che Il timer continuasse a contare andando in background a meno che non venga premuto il tasto STOP.

Come devo fare ? Ho capito che devo usare i servizi ma come ?

Potete indicarmi un codice di esempio ?

Grazie mille.
           
« Ultima modifica: 24 Marzo 2014, 13:57:54 CET da flashman »

Offline Soundboy

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy s4
  • Sistema operativo:
    Android 4.4.2
Re:Run activity in backgorund
« Risposta #1 il: 25 Marzo 2014, 21:47:45 CET »
0
Mi accodo alla richiesta, stesso identico problema, nel mio caso ho una webview con audio, che deve rimanere in background

iClaude

  • Visitatore
Re:Run activity in backgorund
« Risposta #2 il: 26 Marzo 2014, 20:58:12 CET »
0
Sì ma cosa deve fare esattamente questo timer in background? In Android esiste la classe AlarmManager che di per sé è già un timer: se serve semplicemente un timer per far scattare una determinata operazione ad un momento prefissato si può sfruttare direttamente questa classe...

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Re:Run activity in backgorund
« Risposta #3 il: 27 Marzo 2014, 09:21:45 CET »
0
Mi scuso perche' non sono stato molto chiaro.

Attualmente, con l'app in foregorund, io aggiorno un testo con cui vedo il timer avanzare.

Alla fine del conteggio appare un toast che mi dice "END TIMER!".

Io vorrei fare esattamente la stessa cosa con l'app in background.

Lanciare il timer, andare in background ed aspettare alla scadenza del timer la riapertura dell'activity principale e il toast.

Questo processo mi permetterebbe di capire molte cose.

Grazie mille del supporto.

iClaude

  • Visitatore
Re:Run activity in backgorund
« Risposta #4 il: 27 Marzo 2014, 10:30:17 CET »
0
Il timer in bwckground deve comunicare  in modo continuativo con l'Activity in primo piano,  tipo conto alla rovescia,  o semplicemente nel momento in cui scade il timer?

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Re:Run activity in backgorund
« Risposta #5 il: 27 Marzo 2014, 13:13:21 CET »
0
In modo continuativo sarebbe meglio. Qualora dovessi riprendere l'app dovrei riuscire a vedere il timer che avanza.
Anche quando scade il timer mi aiuterebbe a capire la comunicazione.


iClaude

  • Visitatore
Re:Run activity in backgorund
« Risposta #6 il: 27 Marzo 2014, 14:24:06 CET »
0
Ad occhio io utilizzerei un CountdownTimer contenuto in un Service collegato alla app.
Se vai sul mio blog trovi un tutorial sui binding Services.
Forse puoi anche usare solo il CountdownTimer...

Offline flashman

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
Re:Run activity in backgorund
« Risposta #7 il: 27 Marzo 2014, 16:46:50 CET »
0
Attualmente il countdowntimer lo utilizzo nell'activity principale proprio per
Implementare il timer.
Mi stai consigliando di spostarlo in un service?
Vedo nel tuo blog quello che mi consigli.

Offline Noisemaker

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • Mostra profilo
Re:Run activity in backgorund
« Risposta #8 il: 07 Aprile 2014, 11:10:29 CEST »
0
Come ti hanno detto dovresti usare un service, dal momento che non si può far girare un'activity in background (semplificando). La comunicazione con l'activity la puoi fare utilizzando il "bind" come ti ha detto iClaude, oppure con un Handler.

Oltre al service potresti forse farlo anche con un AsyncTask, ma ora non ricordo se viene killato una volta che l'app viene messa in background (mi sembra di no ma non ne sono pienamente sicuro). Puoi provare in modo semplice facendo fare un print all'asynctask mediante LogCat, così non hai la complessità di dover comunicare con l'activity...in questo modo dovresti vedere se continua anche in background a diminuire il tempo ;)