2016-05-06 12 views
0

私はシステム特権を持つアプリを開発しました。デバイスを正常に再起動してシャットダウンすることもできます。問題は、デバイスをリブートした後、uptimeSystemClock.uptimeMillis())カウンタが0に戻らず、以前の値に追加され続けることです。Androidデバイスの稼働時間がプログラムで再起動した後で再起動しない

たとえば、リブート前のアップタイム値が再起動後300秒だった場合、カウンタを0にリセットするのではなく、300秒間のアイドル時間を維持します。

私が使用しているコードは以下の通りである:

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(); 
    } 

Iは、以下を使用:

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(); 
     } 
    } 

アプリメインプロセスが再起動し、シャットダウンとorderes二つのプロセスを有しています第2のプロセスは両方の命令を実行する。明らかに両者ともそれ以上のことをしますが、問題に関連しています。それは彼らがしていることです。

誰かが間違っていることを知っていますか?

答えて

0

実際にはどちらの方法も正しいですが、問題は私がバックグラウンドプロセスで実行していたことでした。私がまだ見つけられなかった何らかの理由で、それをバックグラウンドプロセスで実行しても、デバイスが完全に再起動されませんでした。アニメーションが表示され、すべてが正常にリセットされたように見えますが、デバイスのSystemClock.uptimeMillis()SystemClock.elapsedRealime()はリセットされませんでした。

メインプロセスでリセットコードを実行した後に、SystemClock.uptimeMillis()SystemClock.elapsedRealime()の両方が0に戻りました。

関連する問題