В исходном коде Android вы можете найти следующее:
/**
* Low-level function turn the device off immediately, without trying
* to be clean. Most people should use
* {@link android.internal.app.ShutdownThread} for a clean shutdown.
*
* @deprecated
* @hide
*/
@Deprecated
public static native void shutdown();
Я думаю, что эта нативная функция соответствует вашей su reboot -p
. Кроме того, из приведенного комментария к коду видно, что для выполнения чистого отключения следует использовать ShutdownThread.
В ShutdownThread, Android делает кучу вещей.
- Отключает ActivityManager. Я думаю, что закрытие ActivityManager означает, что все действия пройдут необходимый жизненный цикл и, таким образом, будут сохранены состояния действий. Но я не уверен. Я не проверял.
- Затем Android отключает интерфейс сотовой связи.
- После этого Bluetooth отключается.
- Наконец, он пытается отключить MountService.
Таким образом, вы можете видеть, что неправильно делать su reboot -p
.