「adb reboot」は、再起動する前に通常よりもはるかに速く電話をシャットダウンするのはなぜですか?重要な手順をスキップしていますか?


13

Android 4.1.2を実行しているSamsung Galaxy S Relay 4Gを所有しています。また、PCにadbをインストールしています。

電源ボタンを長押ししてから「再起動」をタップすると、電話機がシャットダウンするまで約10秒かかります。その後、自動的に再起動します。

adb reboot代わりに私が入るとき、電話はずっと速くシャットダウンします:シャットダウンはほんの数秒しかかかりません。その後、再起動します。

私の質問:

  1. なぜadb rebootそんなに速いのですか?

  2. モバイルネットワークオペレータのシャットダウンアニメーションをスキップするだけですか、それともより重要な手順もスキップするのですか?

  3. adb reboot電話を再起動するたびに使用できますか?

  4. (オプション)どうやって知っていますか?


詳細(これはスキップできます)

この質問を投稿する前にいくつかの調査を行いました。しかし、私はまだ啓発されていません。私発見したことをお見せしましょう。

京都マイクロコンピューター株式会社の小林哲之は、このPDFスライドショーのスライド8で、adbはクライアント、サーバー、デーモンの3つの部分で構成されていると説明しています。クライアントとサーバーはPC上で実行されます。デーモンは電話で実行されます。スライド11では、3つの部分すべてが1つのソースディレクトリから構築されることを説明しています。(このディレクトリです。)

そのソースディレクトリで単語reboot検索しservices.cppの一部を読み取ろうとadb rebootしましたが、実際に何をするのか、それが回線を介してどのバイトを送信するのか、電話が実行するときにどのコードを実行するのか、まだわかりませんでしたそれらのバイトを受け取ります。また、自分の質問に対する答えもわかりませんでした。


関連「コマンドラインから(リモートで)Androidを再起動する最良の方法は何ですか?」


setprop sys.powerctl rebootをするかに非常に似ているようです。クリーンシャットダウンとそれに続く再起動の指示。
消防士

回答:


7

platform/system/core上記でリンクしたリポジトリに基づいて、キーはにあると思いますlibcutils/android_reboot.c。そして、重要な定義は次のとおりinclude/cutils/android_reboot.hです。すなわち:

    /* Commands */
    #define ANDROID_RB_RESTART  0xDEAD0001
    #define ANDROID_RB_POWEROFF 0xDEAD0002
    #define ANDROID_RB_RESTART2 0xDEAD0003

通常、通常の再起動モード(デバイスボタンなどを使用)では、シャットダウンプロセスのように、パーティションをアンマウントし、すべてのアプリケーションを終了し、すべてのfopenノードを閉じるため、プロセスは長くなります。adb reboot(それが来るところから)、Linuxのrebootコマンドと比較することができます。それだけでディスクをフラッシュし、最初の殺害プロセスまたはアンマウントファイルシステムなしで再起動を入力します。また、再起動前にディスク(この場合はデバイスのシステムのストレージ部分)をroモードにするために、高速再マウントコマンドが発行されています。

また、発行されたコマンドkernel_restart()はカーネルに組み込まれていると思います。たとえば、http://www.phonesdevelopers.com/1730094/を参照してくださいmachine_restart通話も確認してください。


1
+1。どうもありがとうございました!adb reboot完全なシャットダウン手順を実行しなくても、毎日実行しても安全ですか?
unforgettableidSupportsMonica

痛みはありませんが、そうする正当な理由があるかもしれません。キャッシュされたデータを実際にクリアしたい場合は、とにかく他の解決策があります。
user3344236

などの他のソリューション...?
JohnyTex 16

2

他のStack Exchangeユーザーは、他の場所の投稿で既にこの質問に回答しています。

キャリアのシャットダウンアニメーションを表示しながら、t0mm13b それを書きます。

  • Androidは、ランタイムの重要な部分を安全にシャットダウンしています。
  • OSは、アプリとサービスを正常に終了するように指示する意図もブロードキャストしています。次に、これらはすべてのデータと共有設定のキャッシュをフラッシュし、what-notをsqliteデータベースなどに保存します。

言い換えると、アプリとサービスには、クリーンアップを体系的に行う機会が与えられます。

[ adb reboot] などのコマンドは厳しいです。実際には、正常なシャットダウンのために安全メカニズムをバイパスします。

他の場所で、Yuryは、正常なシャットダウン中にAndroidが行うことについて別の説明を提供します。

  • ActivityManagerをシャットダウンします。ActivityManagerをシャットダウンすると、すべてのアクティビティが必要なライフサイクルを通過し、アクティビティの状態が保存されると思います。確信はないけど。チェックしませんでした。
  • 次に、Androidはセルラー無線インターフェースをオフにします。
  • その後、Bluetoothをオフにします。
  • 最後に、MountServiceをシャットダウンしようとします。

adb reboot 上記の一部またはすべてをスキップするため、高速です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.