Ho un servizio associato. Un'attività è vincolante. Non associa il metodo Service on Activity al metodo onStop()
.Come impedire che il servizio associato venga distrutto mentre il runtime di Activity cambia (es: orientamento)
Il problema è che se le modifiche di runtime (ad esempio, il cambiamento di orientamento) si verificano sull'attività, l'attività viene ricreata. Quindi, il metodo onStop()
viene chiamato dall'attività e l'attività non svolge il servizio in quel metodo, il che comporta la distruzione del servizio (e il suo riavvio).
Voglio preservare il Servizio dall'essere distrutto nelle modifiche di runtime mantenendo il Servizio fermo quando l'attività è invisibile. Si potrebbe dire che provare startService()
ma fa in modo che il servizio non si fermi quando l'attività è invisibile. Se aggiungo l'attività stopService all'attività onStop()
, il risultato è lo stesso di bindService()
e unbindService()
.
PostDelaying unbindService()
in onStop()
di Acility è in grado di risolvere parzialmente questo problema, ma il tempo di ritardo sarà arbitrario e ciò impedisce all'attività di ottenere GC per qualche tempo. Voglio una soluzione più chiara.
Non voglio soluzioni come android:configChanges="orientation"
poiché ci sono anche altre modifiche di runtime, ed è un modo scoraggiato di elaborare le modifiche di runtime.
In breve, voglio che il servizio si comporti come un frammento che ha chiamato setRetainInstance(true)
. Tuttavia, i frammenti non hanno qualcosa come bindService()
. Cosa dovrei fare?
Non ho trovato il contesto dell'applicazione. Grazie per la risposta. – Naetmul