Sto provando a creare un'app per Android che eseguirà ripetutamente alcuni processi ogni 10 minuti. Come ho scoperto, Handlers
sono più affidabili dei timer o della programmazione. Quindi svilupperò la mia app utilizzando lo Handlers
utilizzando i seguenti codici.Gestore Android per attività ripetute - si sovrapporrà? Timer-task VS gestore VS gestore allarmi
Sono po 'preoccupato del fatto che i codici sottostanti creeranno separata Handlers
ad ogni volta che avvio l'applicazione e tenerli in esecuzione in parallelo, può essere dato che sto creando il Handler
su onCreate
.
Allora, qual è il modo migliore per mantenere solo un singolo Handler
viene eseguito in background in un momento?
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handler = new Handler(); // new handler
handler.postDelayed(runnable, 1000*60*10); // 10 mins int.
setContentView(R.layout.activity_pro__sms);
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* my set of codes for repeated work */
foobar();
handler.postDelayed(this, 1000*60*10); // reschedule the handler
}
};
Basta chiedersi: qual è il contesto del tuo "lavoro ripetuto"? O forse meglio detto: che tipo di app è? Può essere un'ipotesi molto generosa pensare che gli utenti utilizzeranno attivamente la tua app per 10+ minuti alla volta (a meno che non sia come un gioco o così, da qui la mia domanda). Usando un 'Handler' mentre la tua app * non * è in primo piano, non potrebbe la giusta linea di condotta. –
Perché non utilizzare un servizio? –
Non ho bisogno di perdere l'attività eseguendo anche in modalità sospensione. I servizi possono essere attivi anche in modalità inattiva (sleep)? O devo avere una sveglia. Per quanto riguarda l'utilizzo delle risorse da parte dei servizi rispetto ad AlarmManager (ora sto provando le cose con Alarm Manager) –