以编程方式关闭生根设备时的可靠性问题

时间:2019-04-10 15:12:02

标签: android root

我正在使用的应用程序之一是在有根设备上运行的本地应用程序。它的部分功能是在某个时候关闭设备。

如果我通过adb连接到设备,则可以在root shell中执行以下命令:

svc power shutdown 

此命令的结果是,屏幕上显示“正在关闭”对话框,并且设备已关闭。一切都很好,除了在应用程序中执行该命令时不起作用:

Runtime.getRuntime().exec("su -c 'svc power shutdown'");

上面的调用没有任何作用,但是在某些情况下,一旦应用程序的进程被终止(例如,从AndroidStudio重新安装应用程序),设备就会关闭。

因此,我试图找到一种替代方法,并发现以下方法可行:

Runtime.getRuntime().exec("su -c 'reboot -p'");

上述调用会导致立即关闭设备。立即=喜欢将电池取出。

尽管这种方法有效,但我担心状态一致性和数据损坏。看起来这种方法只是简单地关闭了设备,而没有允许任何应用程序正常完成并存储其状态。包括首先发出关闭请求的应用。

我有两个问题:

  1. 如何使第一种方法可靠地工作(svc电源关闭)?

  2. 如果继续第二种方法(reboot -p),我真的应该担心状态不一致和数据损坏吗?

任何其他信息/链接/建议将不胜感激。

谢谢

0 个答案:

没有答案