6

Quando la batteria del mio dispositivo Android muore quali metodi nelle classi Activity e Fragment (se presenti) vengono chiamati durante la fase di "Spegnimento" del dispositivo?Quali metodi Android vengono chiamati quando la batteria muore?

Inoltre, se un utente sta attualmente guardando uno schermo nella mia app e tiene premuto il pulsante di accensione e sceglie lo spegnimento, gli eventi chiamati/non chiamati coincidono con quando la batteria è scarica e si spegne automaticamente?

OnPause?

OnStop?

OnDestroy?

OnDetach?

Bonus: Avrò tempo sufficiente per salvare una piccola quantità di dati su un server web?

Per chiarire "dies" quando la batteria del dispositivo è "completamente" morta, non accetta più input e una finestra di messaggio/schermata di caricamento viene visualizzata sullo schermo con "Spegnimento". Poco dopo il dispositivo si spegne.

Ho solo bisogno di tempo sufficiente per salvare uno stato moduli prima che il telefono si spenga, ho una strategia per pulire i dati salvati se il telefono non si spegne, ma voglio avvicinarmi il più possibile al telefono (più di un minuto è davvero inutile).

+1

nessuno di loro. È necessario utilizzare un ricevitore broadcast per questo. – Rohit5k2

+1

@ Rohit5k2: "nessuna di loro" fonte per tale affermazione? (stiamo parlando di uno spegnimento controllato, non di un'improvvisa rimozione della batteria) – njzk2

risposta

4

OnDestroy viene chiamato su tutto quando la batteria raggiunge lo 0,5%

EDIT: Non c'è tempo specificato che si deve fare qualcosa in processo di spegnimento risultante da batteria scarica/scarica, che dipende dalla batteria del telefono specifica e non dal sistema, pertanto è possibile disporre del tempo necessario per salvare i dati su un server Web su alcuni telefoni ma non su altri. Sperimentalmente, sono stato in grado di scrivere una breve riga su un file che stavo già scrivendo prima che onDestroy venisse chiamato e niente di più.

+1

hai una fonte per confermare quell'affermazione e quel numero? – njzk2

+2

https://android.googlesource.com/platform/frameworks/base/+/625239a05401bbf18b04d9874cea3f82da7c29a1/services/java/com/android/server/BatteryService.java – John

+0

0,5% è il segno da arrotondare a 0 nella gestione della batteria, quindi shutdownIfNoPower () verrà chiamato nel collegamento che ho appena postato – John

2

I metodi che hai menzionato sono callback del ciclo di vita delle attività, nessuno di questi verrà chiamato quando la batteria è scarica. È necessario utilizzare un ricevitore broadcast per questo

Vedere questo How to detect when the Battery's low : Android?

+0

Qual è l'ultimo evento che riceverò prima che il dispositivo si spenga? e grosso modo, quanto tempo avrei a disposizione prima che il telefono si spenga automaticamente? – Smithy

+0

Avrebbe attivato il ricevitore per ogni modifica. Puoi prendere l'azione quando lo ritieni opportuno. – Rohit5k2

Problemi correlati