Autore Topic: Handler con app in background  (Letto 577 volte)

Offline diridev

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 8.1/ OS X Mavericks
Handler con app in background
« il: 13 Agosto 2014, 13:31:55 CEST »
0
Ciao a tutti,
sto facendo un'applicazione molto semplice, un contatore per la precisione. Tramite un handler eseguo un Runnable che incrementa una variabile ogni secondo
Codice (Java): [Seleziona]
handler.postDelayed(runnable, 1000);Tutto funziona finchè rimane l'app attiva (anche a dispositivo bloccato), il problema sorge se viene messa in background: il contatore inizia ad andare in ritardo di qualche secondo.. Nel logcat appaiono più volte righe simili a questa:
Codice: [Seleziona]
08-13 12:40:49.356: I/art(1387): Heap transition to ProcessStateJankImperceptible took 41.565521ms saved at least 386KBNon so se siano la causa del ritardo, ma fatto sta che appaiono solo quando l'app è in background.
Consigli?
« Ultima modifica: 13 Agosto 2014, 13:37:59 CEST da diridev »

iClaude

  • Visitatore
Re:Handler con app in background
« Risposta #1 il: 13 Agosto 2014, 15:00:18 CEST »
0
Scusa,  non c'entra nulla,  ma a che serve avere un app che gira in background incrementando una variabile ogni secondo.?
Non basta controllare l'orologio di Android quando serve per quello?

Offline diridev

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 8.1/ OS X Mavericks
Re:Handler con app in background
« Risposta #2 il: 13 Agosto 2014, 15:09:10 CEST »
0
Scusa,  non c'entra nulla,  ma a che serve avere un app che gira in background incrementando una variabile ogni secondo.?
Non basta controllare l'orologio di Android quando serve per quello?
Eh beh.. Ovviamente non fa solo quello, il tempo finale è impostato dall'utente che viene avvisato quando sono trascorsi tot secondi (non l'ho detto perchè non mi sembrava rilevante ai fini della domanda), aggiungerò poi altre funzioni ma prima vorrei risolvere questo problema.
« Ultima modifica: 13 Agosto 2014, 15:11:06 CEST da diridev »

iClaude

  • Visitatore
Re:Handler con app in background
« Risposta #3 il: 13 Agosto 2014, 15:13:36 CEST »
0
Fa solo questo?
Non c'è alcun bisogno di creare un orologio personalizzato: basta e avanza quello interno di Android.
Puoi usare un AlarmManager.

Offline diridev

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Windows 8.1/ OS X Mavericks
Re:Handler con app in background
« Risposta #4 il: 13 Agosto 2014, 15:26:18 CEST »
0
Fa solo questo?
Non c'è alcun bisogno di creare un orologio personalizzato: basta e avanza quello interno di Android.
Puoi usare un AlarmManager.
No mi serve che faccia cose specifiche che non fa l'orologio di android, altrimenti non avrei avuto la necessità di creare un'altra app.
Tornando al topic, utilizzare un AlarmManager era il piano di riserva, nel caso in cui non avessi trovato una soluzione.. Mi piacerebbe comunque capire il perchè di quel ritardo e non restare con il dubbio.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Handler con app in background
« Risposta #5 il: 14 Agosto 2014, 22:22:39 CEST »
0
Come alarm manager prevede il metodo set e setExact forse di default l'handler ha una sorta di set (spero di essermi spiegato).

Ma provare con un thread normale?
Thrad t = new Thrad(new Runnable());

Oppure usare CountDownTimer?