Why does "adb reboot" shut down my phone so much faster than usual before it reboots? Is it skipping important steps? I own a Samsung Galaxy S Relay 4G running Android 4.1.2. Also, I have adb installed on a PC.

When I long-press the Power button then tap "Restart", my phone takes about ten seconds to shut down. Then it reboots itself.

When I enter adb reboot instead, the phone shuts down much faster:  the shutdown takes only a second or so. Then it reboots.

My questions:


Why is adb reboot so much faster?
Is it simply skipping the mobile network operator's shutdown animation, or is it skipping some more important procedures as well?
Can I use adb reboot every single time I want to reboot the phone, or is there some disadvantage to doing so?
(Optional) How do you know?




More information (you can skip this)

I did some research before posting this question. But I am still unenlightened. Let me show you what I did discover.

Tetsuyuki Kobayashi of Kyoto Microcomputer Co. explains in slide 8 of this PDF slideshow that adb consists of three parts:  a client, a server, and a daemon.  The client and the server run on a PC.  The daemon runs on a phone.  In slide 11, he explains that all three parts are built from one source directory. (It's this directory.)

I tried searching in that source directory for the word reboot and reading parts of services.cpp, but I still haven't been able to figure out what adb reboot actually does, or what bytes it sends over the wire, or what code the phone runs when it receives those bytes. I also haven't figured out the answer to any of my questions.



Related:  "What's the best way to restart Android via command line (remotely)?"
Based on the platform/system/core repository you linked above, I think the key is in libcutils/android_reboot.c. And important definitions are in include/cutils/android_reboot.h; namely:

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


Usually in normal reboot mode (using device button, etc.), the process is longer because (I assume) it umount partition, kill all applications, close all fopen nodes, as in shutdown process. The adb reboot can be compared with Linux reboot command (from where it comes): it just flushes the disk and enter reboot without first killing processes or unmounting filesystems. I see also a fast remount command issued to put disk (in our case device's storage part of system) in ro mode before reboot.

I also believe the command issued is kernel_restart() which is embedded in kernel. See for example http://www.phonesdevelopers.com/1730094/. Also check machine_restart calls.