2016-03-28 30 views
6

Sto costruendo un'app di streaming musicale per Android.Funzione "Risparmio batteria" che uccide il mio servizio musicale

In questa applicazione, ho un Service che è responsabile per la riproduzione audio da un server HTTP. Prima di giocare, mi assicuro di startForeground() e di acquisire uno WakeLock parziale, in modo che il mio servizio non venga ucciso. Ho anche un WifiLock, per ogni evenienza.

Il servizio funziona correttamente ... finché il telefono non è acceso "modalità risparmio batteria". Nel momento in cui accendo il risparmio della batteria e disconnetto il mio telefono dalla fonte di alimentazione, il mio servizio viene ucciso con il fuoco!

Sfortunatamente non sembra nemmeno che si chiami onDestroy(), quindi la mia notifica da startForeground() rimane visibile, anche se il servizio è morto.

Il telefono è un Samsung Galaxy S6, con Android 6.0.1 su di esso.

due domande:

  1. C'è un modo per mantenere il servizio viva nonostante il thingy risparmio batteria?
  2. In caso contrario, mi piacerebbe sapere almeno quando il mio servizio viene ucciso, in modo da poter fare un po 'di pulizia (rimuovere la notifica & roba interna).

Qualche suggerimento?

+0

Hai trovato una soluzione per questo problema? Ho un caso simile: a seconda del dispositivo e della versione Android esatta, l'app o la connessione wifi vengono interrotte ignorando tutti i wakelocks – mhenryk

+0

Non conosco alcuna soluzione per questo. Non sono sicuro che sia stato corretto in Android 7 in realtà ... La mia app non era l'unica: anche Google Music e Spotify avevano il problema. – aspyct

+0

Android 7 presenta ancora il problema. Grazie per l'informazione. – mhenryk

risposta

0

Questo è possibile utilizzando un servizio in primo piano in un processo separato in possesso di un wakelock parziale.

android:process="process_name" 

(documentazione: http://developer.android.com/guide/topics/manifest/service-element.html)

Si noti che non si dovrebbe usare SharedPreferences in un ambiente multi-processo.

Vedi anche questo problema: https://code.google.com/p/android/issues/detail?id=193802

+1

Purtroppo non funziona, a meno che non stia facendo qualcosa di sbagliato. Ho messo diversi processi per l'applicazione e il servizio, e ancora nessun miglioramento. Qualcosa come ''. Riesci a trovare qualcosa di sbagliato? – aspyct

+0

Penso che sia stato pensato per mettere un servizio in un processo separato –

Problemi correlati