Autore Topic: Evitare che un Service venga killato da android  (Letto 598 volte)

Offline rebus_007

  • Utente junior
  • **
  • Post: 51
  • Hola!
  • Respect: +2
    • Github
    • Google+
    • rebus007
    • raphael.bussa
    • rebus_007
    • Mostra profilo
    • rebus007
  • Dispositivo Android:
    Nexus 5X
  • Play Store ID:
    Raphael+Bussa
  • Sistema operativo:
    OS X El Capitan
Evitare che un Service venga killato da android
« il: 21 Marzo 2014, 00:03:50 CET »
0
In una mia app faccio uso di un Service per gestire le notifiche, già viene avviato all'avvio dello smartphone da un BroadcastReceiver che viene richiamato all'avvio

Codice (XML): [Seleziona]
<receiver
   android:name=".AvvioNotifiche"
   android:enabled="true"
   android:exported="false" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

Codice (Java): [Seleziona]
public class AvvioNotifiche extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
             Intent serviceIntent = new Intent(context, ServizioNotifiche.class);
             context.startService(serviceIntent);
     }
}

ora il problema è che il mio Service dopo un poco viene killato e non funziona più, come posso evitare che questa cosa succeda?

ciao rebus007
"Chi è più pazzo, il pazzo o il pazzo che lo segue?" - Obi-Wan Kenobi

DEVICE CHE USO: Nexus 5X 32 GB | NVIDIA SHIELD Tablet K1 16 GB

iClaude

  • Visitatore
Re:Evitare che un Service venga killato da android
« Risposta #1 il: 24 Marzo 2014, 14:51:51 CET »
0
Devi utilizzare il metodo (all'interno del Service)
startForeground(notifica_id, notifica)

Ricordandoti di chiamare
stopForeground(true)
quando il Service non serve più. ..

Offline Noisemaker

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • Mostra profilo
Re:Evitare che un Service venga killato da android
« Risposta #2 il: 06 Aprile 2014, 16:52:03 CEST »
0
Attenzione però che nessuno ti dice che il service non venga mai killato. Se la memoria va verso l'esaurimento Android inizia  killare anche i processi a priorità più alta (quelli con le notifiche), quindi tieni a mente questa cosa durante lo sviluppo dell'app...
Inoltre puoi impostare un Service in modo che riparta se viene killato facendo ritornare il valore START_STICKY nell'onStartCommand