6

Когда аккумулятор на моем устройстве Android умирает Какие методы в классах «Активность» и «Фрагмент» (если есть) вызывается на этапе «Выключение питания» устройства?Какие методы Android вызывают, когда батарея умирает?

Кроме того, если пользователь в настоящее время смотрит на экран в моем приложении, и они удерживают кнопку питания и выбирают выключатель, выполняются ли события, называемые/не называемые, совпадают, когда батарея разряжается и автоматически отключается?

OnPause?

OnStop?

OnDestroy?

OnDetach?

Бонус: Будет ли у меня достаточно времени для хранения небольшого количества данных на веб-сервере?

Чтобы прояснить «штампы», когда аккумулятор устройства «полностью» мертв, он не принимает больше ввода и на экране появляется окно сообщения/загрузка экрана с надписью «Выключение питания». Вскоре после этого устройство выключается.

Мне нужно достаточно времени, чтобы сохранить состояние форм перед выключением телефона. У меня есть стратегия очистки сохраненных данных, если телефон не выключается, но я хочу, чтобы как можно ближе к выключенному телефону (ничто иное, как минута).

+1

ни один из них. Для этого вам необходимо использовать широковещательный приемник. – Rohit5k2

+1

@ Rohit5k2: 'ни один из них' источник для этого подтверждения? (мы говорим об отключенной мощности, а не о внезапном отключении батареи) – njzk2

ответ

4

OnDestroy называется на все, когда батарея достигает 0,5%

EDIT: Там нет указанного времени, что вы должны сделать что-нибудь в выключение из-за низкой/разряженной батареи, которая будет зависеть от конкретной батареи телефона, а не от системы, поэтому у вас может быть достаточно времени для сохранения данных на веб-сервере на некоторых телефонах, но не в других. Экспериментально, я только смог написать короткую строку в файл, который я уже писал, прежде чем он был вызван, и ничего больше.

+1

У вас есть источник для подтверждения этого утверждения и этого числа? – njzk2

+2

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

+0

0,5% - это знак, равный 0 в процессе работы с батареей, поэтому shutdownIfNoPower () будет вызываться в ссылке, которую я только что опубликовал – John

2

Способы, о которых вы упомянули, это обратный вызов жизненного цикла активности, ни один из них не будет вызван, когда батарея разряжена. Вы должны использовать широковещательный приемник для этого

Смотреть это How to detect when the Battery's low : Android?

+0

Какое последнее событие я получу до того, как устройство действительно отключится? и примерно, сколько времени у меня будет, прежде чем телефон автоматически отключится? – Smithy

+0

Это вызовет приемник при каждом изменении. Вы можете принять меры, когда сочтете нужным. – Rohit5k2

Смежные вопросы