Android root poweroff

mic*_*con 7 android shutdown root

在我的root用户的Android应用程序上,我执行关闭

su reboot -p
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我注意到手机几乎立即关闭(而不是显示关机动画,可能正在做其他事情).

这是以编程方式关闭Android手机的正确方法吗?是否有一些关键代码需要在关机前执行?

Yur*_*ury 0

在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();
Run Code Online (Sandbox Code Playgroud)

我认为这个本机函数对应于您的su reboot -p. 此外,从引用的代码注释中可以看出,应该使用 ShutdownThread 来执行干净关闭。

在 ShutdownThread 中,Android 做了很多事情。

  • 它关闭 ActivityManager。我认为关闭 ActivityManager 意味着所有活动都将通过必要的生命周期,因此,活动的状态将被存储。但我不确定。我没有检查。
  • 然后,Android 会关闭蜂窝无线电接口。
  • 之后,它会关闭蓝牙。
  • 最后,它尝试关闭 MountService。

由此可见,这样做是错误的su reboot -p