【发布时间】:2016-05-06 15:17:36
【问题描述】:
我开发了一个具有系统权限的应用程序。它能够成功重启设备并关闭它。问题是重启设备后,它的uptime (SystemClock.uptimeMillis()) 计数器并没有回到0,而是不断增加它之前的值。
例如,如果重启前的正常运行时间值是重启后 300 秒,它将继续从 300 秒开始累加,而不是将计数器重置为 0。
我使用的代码如下:
IPowerManager powerManager = IPowerManager.Stub.asInterface(
ServiceManager.getService(Context.POWER_SERVICE));
try {
if(doReboot) {
Log.v("Provisioning Manager", "PowerUtil: reiniciando Kitkat");
powerManager.reboot(false, null, false);
} else {
Log.v("Provisioning Manager", "PowerUtil: apagando Kitkat");
powerManager.shutdown(false, false);
}
} catch (RemoteException e) {
e.printStackTrace();
}
我还使用了以下内容:
if(doReboot) {
Log.v("Provisioning Manager", "PowerUtil: reiniciando JellyBean");
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
pm.reboot(null);
} else {
Log.v("Provisioning Manager", "PowerUtil: apagando JellyBean");
try {
Runtime.getRuntime().exec(new String[]{ "su", "-c", "reboot -p"});
} catch (IOException e) {
e.printStackTrace();
}
}
该应用程序有两个进程,主进程命令重启和关闭,第二个进程执行这两个命令。显然,他们俩都做的不止于此,但与问题相关,这就是他们所做的。
有人知道我做错了吗?
【问题讨论】:
标签: android service android-4.4-kitkat reboot uptime