Autore Topic: [Quesito] Il modo migliore per un servizio in background  (Letto 600 volte)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
[Quesito] Il modo migliore per un servizio in background
« il: 26 Luglio 2014, 15:56:31 CEST »
0
salve a tutti.

Ho necessità di far girare un servizio in background. Ora, escludo subito la possibilità di un normale service, in quanto ho notato che su alcune versioni 4.4 il servizio non viene ricreato correttamente (Leggere bug su internet)

Devo "fare qualcosa per 30 secondi"  ogni tot minuti.
Pensavo di adoperare un alarmManager che chiama un BroadcastReceiver, il quale nel metodo onReceiver avvia un Service.
Il service lo importo su return START_NOT_STICKY e una volta fatto cio che devo fare, nel service stesso chiamo stopSelf().

Cosi facendo ho un servizio in background che occupa tempo e risorse solo per il tempo necessario.

Ora vorrei dei consigli e precesazioni sull' AlarmManager:
-  alarmManager.setRepeating(AlarmManager.RTC, triggerTime,interval, pendingIntent);
in questo metodo, stento a capire come funzioni il triggerTime, e soprattutto cosa cambia da .RTC e .RTC_WAKE_UP

preciso che io non devo sbloccare lo schermo o altri durante la mia operazione in background.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #1 il: 26 Luglio 2014, 16:06:28 CEST »
0
forse non ti è d'aiuto (non conoscevo il metodo setRepeating) ma io per far n lavoro simile, nel metodo che richiamava il service, settavo il nuovo alarm

Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #2 il: 26 Luglio 2014, 16:08:09 CEST »
0
io accetto qualsiasi consiglio purchè non sia l'uso semplice di un service e basta.

MI diresti come hai fatto? cosi in una riga non ho ben capito, grazie

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #3 il: 26 Luglio 2014, 16:24:14 CEST »
0
codice vecchio, ma dovrebbe funzionare


Codice (Java): [Seleziona]
public void setAlarm10m() {
       
        AlarmManager al = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        int alType = AlarmManager.RTC_WAKEUP;
        Calendar now = Calendar.getInstance();
        long triggerAtTime = now.getTimeInMillis() + 600000;
     
        Intent myIntent = new Intent(AlarmServiceOfferte.this, ReceiverOfferte.class);
        pendingIntent = PendingIntent.getBroadcast(AlarmServiceOfferte.this, 0, myIntent,0);
        al.set(alType,triggerAtTime,pendingIntent);
       
       
     }


con questo metodo setto l'allarm 10 minuti dopo la notifica. Poi fra i metodi eseguiti al momento dell'allarm, metto il metodo setAlarm10m()

Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #4 il: 26 Luglio 2014, 16:26:58 CEST »
0
Questo lo setti nell Activity. Per ofa ho trovato una soluzione che mi funziona ma ovviamente se killo l'app, l'Alarm manager si interrompe.

Possibile che non esista qualche cosa di funzionante al 100% ? sono mesi che leggo di sto bug e ancora non l' hanno risolto.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #5 il: 26 Luglio 2014, 16:36:58 CEST »
0
provato in android L se funziona?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #6 il: 26 Luglio 2014, 18:27:07 CEST »
0
pochissime persone hanno android L. Non ho provato in quanto non ho nessun dispositivo.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #7 il: 26 Luglio 2014, 18:36:51 CEST »
0
Puoi emularlo, in adt c'è la preview
se devi provare qualche codice in particolare, posso provarlo sul mio device. Ma suppongo tu voglia un app che funzioni sul numero massimo di dispositivi

Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #8 il: 26 Luglio 2014, 18:40:17 CEST »
0
fai un activity vuota. Metti un service solamente con dei log.
metti return START_NOT-STICKY. Vedrai che se termini l'app forse il servizio non riparte, o meglio riparte ma non funziona molto bene. Ciò accade sia su n5 su note 3, alcuni cell con rom moddate. Per esempio sul mio moto g funziona perfettamente

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #9 il: 26 Luglio 2014, 18:44:52 CEST »
0
appena ho un pò di tempo provo.
Ma hai provato a metter gli allarm che si richiamano?


Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #10 il: 26 Luglio 2014, 18:50:19 CEST »
0
Ciò pensato. Ma alla fine se termino l'applicatione o android killa la mia app l'alarm viene killata pure lei.

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #11 il: 26 Luglio 2014, 19:00:09 CEST »
0
no, perchè l'allarm è settato nel calendario. Il problema è se viene killato il calendario. (se nn sbaglio)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1227
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:[Quesito] Il modo migliore per un servizio in background
« Risposta #12 il: 26 Luglio 2014, 19:02:37 CEST »
0
In questo momento la mia app setta l'alarm manager con ripetizione ogni minuto.
il Broadcast receiver "sente" lo scocco della lancetta, e avvia un service. Il service invia un sms e poi si auto killa.
Se termino l'app non ricevo più sms.

Post unito: 27 Luglio 2014, 10:56:04 CEST
Qualcuno ha anche un solo link o codice di un service o qualcosa che stia effettivamente in background con certezza?
« Ultima modifica: 27 Luglio 2014, 10:56:04 CEST da tonno16, Reason: Merged DoublePost »