Mengapa "adb reboot" mematikan ponsel saya jauh lebih cepat dari biasanya sebelum reboot? Apakah itu melewatkan langkah-langkah penting?

13

Saya memiliki Samsung Galaxy S Relay 4G yang menjalankan Android 4.1.2. Juga, saya telah menginstal adb pada PC.

Ketika saya lama menekan tombol Power lalu ketuk "Restart", ponsel saya membutuhkan sekitar sepuluh detik untuk dimatikan. Kemudian reboot sendiri.

Ketika saya masuk adb rebootsebagai gantinya, telepon dimatikan lebih cepat: shutdown hanya membutuhkan satu detik atau lebih. Kemudian reboot.

Pertanyaan saya:

  1. Mengapa adb rebootjauh lebih cepat?

  2. Apakah itu hanya melewatkan animasi shutdown operator jaringan seluler, atau apakah melewatkan beberapa prosedur yang lebih penting juga?

  3. Dapatkah saya menggunakan adb rebootsetiap kali saya ingin me-reboot telepon, atau adakah kerugian untuk melakukannya?

  4. (Opsional) Bagaimana Anda tahu?


Informasi lebih lanjut (Anda dapat melewati ini)

Saya melakukan riset sebelum memposting pertanyaan ini. Tapi saya masih belum tercerahkan. Mari saya menunjukkan apa yang saya lakukan menemukan.

Tetsuyuki Kobayashi dari Kyoto Microcomputer Co. menjelaskan dalam slide 8 slide PDF ini bahwa adb terdiri dari tiga bagian: klien, server, dan daemon. Klien dan server dijalankan pada PC. Daemon berjalan di telepon. Dalam slide 11, ia menjelaskan bahwa ketiga bagian dibangun dari satu direktori sumber. (Ini direktori ini .)

Saya mencoba mencari di direktori sumber untuk katareboot dan membaca bagian dari services.cpp , tapi saya masih belum bisa mencari tahu apa yang adb rebootsebenarnya terjadi, atau byte apa yang dikirimkan melalui kabel, atau kode apa yang dijalankan ponsel ketika itu menerima byte tersebut. Saya juga belum menemukan jawaban untuk pertanyaan saya.


Terkait : "Apa cara terbaik untuk me-restart Android melalui command line (jarak jauh)?"

tak terlupakanMendukungMonika
sumber
Tampak sangat mirip dengan apa yang setprop sys.powerctl rebootakan dilakukan. Shutdown najis diikuti oleh instruksi untuk reboot kembali.
Firelord

Jawaban:

7

Berdasarkan platform/system/corerepositori yang Anda tautkan di atas, saya pikir kuncinya ada di libcutils/android_reboot.c. Dan definisi penting ada di include/cutils/android_reboot.h; yaitu:

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

Biasanya dalam mode reboot normal (menggunakan tombol perangkat, dll.), Prosesnya lebih lama karena (saya berasumsi) itu partisi, bunuh semua aplikasi, tutup semua node fopen, seperti dalam proses shutdown. The adb rebootdapat dibandingkan dengan Linux perintah reboot (dari mana ia datang): hanya flushes disk dan masukkan restart tanpa proses pembunuhan pertama atau filesystem unmounting. Saya juga melihat perintah remount cepat yang dikeluarkan untuk meletakkan disk (di bagian penyimpanan perangkat case sistem kami) dalam mode ro sebelum reboot.

Saya juga percaya perintah yang dikeluarkan adalah kernel_restart()yang tertanam dalam kernel. Lihat misalnya http://www.phonesdevelopers.com/1730094/ . Periksa juga machine_restartpanggilan.

pengguna3344236
sumber
1
+1. Terima kasih banyak! Apakah aman untuk saya lakukan adb rebootsetiap hari walaupun tidak akan melakukan prosedur shutdown penuh?
tak terlupakanMendukungMonika
Tidak sakit, tetapi Anda mungkin punya alasan bagus untuk melakukannya. Jika Anda benar-benar ingin menghapus beberapa data yang di-cache, ada beberapa solusi lain.
user3344236
Solusi lain seperti ...?
JohnyTex
2

Pengguna Stack Exchange lain telah menjawab pertanyaan ini di pos di tempat lain.

t0mm13b menulis itu, saat menampilkan animasi shutdown operator Anda:

  • Android dengan aman mematikan bagian-bagian penting dari runtime.
  • OS juga menyiarkan maksud untuk memberi tahu aplikasi dan layanan agar ditutup dengan anggun. Ini, pada gilirannya, membersihkan cache dari semua data dan preferensi yang dibagikan, menyimpan apa yang tidak boleh ke database sqlite, dan lain-lain.

Dengan kata lain, aplikasi dan layanan diberi kesempatan untuk melakukan pembersihan secara sistematis.

[Perintah seperti adb reboot] lebih keras. Mereka benar-benar melewati mekanisme keselamatan untuk shutdown yang anggun.

Di tempat lain, Yury menawarkan penjelasan lain tentang apa yang dilakukan Android selama shutdown yang anggun:

  • Ini mematikan ActivityManager. Saya pikir mematikan ActivityManager berarti bahwa semua aktivitas akan melewati siklus hidup yang diperlukan dan, dengan demikian, keadaan aktivitas akan disimpan. Tapi saya tidak yakin. Saya tidak memeriksa.
  • Kemudian, Android mematikan antarmuka radio seluler.
  • Setelah itu, mematikan Bluetooth.
  • Akhirnya, ia mencoba untuk mematikan MountService.

adb reboot lebih cepat karena melompati beberapa atau semua hal di atas.

tak terlupakan
sumber