Saya mencari cara terbaik / ramah untuk me-reboot perangkat Android 4.1.1 saya yang sudah di-root. Saya menemukan solusi ini sejauh ini:
su -c "reboot"
- Menyebabkan masalah dengan wifi setelah restart pada perangkat saya ... Saya membaca bahwa ini dapat menyebabkan sistem file currupt dalam beberapa kasus ... Tidak berfungsi melalui ssh untuk saya.toolbox reboot
- Kekhawatiran yang sama di sini, tetapi bekerja melalui ssh.reboot -d 8 -f
- Menyebabkan masalah setelah restart misalnya beberapa aplikasi tidak akan mulaibusybox killall system_server
- "Hot Reboot" (tidak benar-benar restart sistem)start|stop
- Memulai / menghentikan Android Runtime (bukan benar-benar sistem restart)
Apa yang sedang dilakukan perangkat saat saya menekan tombol daya (perangkat keras)? Saya kira itu cara yang paling ramah.
su -c "reboot"
menjalankanreboot
perintah, yang didefinisikan dalamreboot.c
.reboot.c
tidak banyak berubah selama bertahun-tahun. Itu selalu disebut sinkronisasi () dan kemudian reboot perangkat. Selain itu, berkat komitmen ini , versi modernreboot.c
juga meng-unmount semua sistem file. Android 4.1.1 termasuk komit yang saya sebutkan, dan jadi saya tidak melihat bagaimanasu -c "reboot"
pada Android 4.1.1 bisa menyebabkan korupsi sistem file.su -c 'am start -a android.intent.action.REBOOT'
) berfungsi untuk saya di Android 4.1.2, dan bagi saya sepertinya yang terbaik dari jawaban yang ada. Jika itu bekerja untuk Anda di Android 4.1.1, atau jika Anda terlalu sibuk untuk mencobanya, silakan klik tanda centang hijau untuk membuatnya mengapung ke bagian atas bagian jawaban.Jawaban:
Sederhana, sungguh:
Dengan kata lain, aplikasi dan layanan diberi kesempatan untuk melakukan pembersihan secara sistematis.
Perintah yang telah Anda coba lebih keras. Mereka benar-benar melewati mekanisme keselamatan untuk shutdown yang anggun.
Android bukan Linux semata, dalam arti versi desktop Linux biasa di mana perintah-perintah itu dapat dikeluarkan untuk mematikan lingkungan Linux.
Dimungkinkan untuk membuat skrip wrapper seperti ini:
Anda dapat menyimpan ini sebagai
safe_shutdown.sh
, dengan izin 0755. Jarak tempuh Anda dapat bervariasi, tergantung pada handset dan ROM - jadi tidak ada jaminan di sana.sumber
adb reboot
? Saya tidak yakin apakah itu aman!?! Mungkin skrip pembungkus di sekitarnya untuk mengirim siaranACTION_SHUTDOWN
lalu meneleponadb reboot
?ACTION_SHUTDOWN
akan melakukan apa yang Anda inginkan: "Aplikasi biasanya tidak perlu menangani ini, karena aktivitas latar depan akan dijeda juga." Karena itu, sepertinya sebagian besar aplikasi tidak akan menanganinya. Apakah menjeda aktivitas cukup?Anda bisa melihat dialog dengan opsi untuk mematikan perangkat (stok Android tidak menawarkan reboot). Tampaknya ShutdownActivity dipanggil saat Anda lama menekan tombol Daya.
Bagaimanapun, ini adalah apa yang dapat Anda coba, dari jarak jauh atau lokal, tetapi hanya dengan akses root:
Ini akan melakukan shutdown yang anggun diikuti oleh reboot. Saya mencari niat ketika saya melihatnya di sini .
Metode diuji pada Android 4.2.1, 5.0.2 dan 6.0.1 dan harus bekerja untuk Android 4.1.1 juga
Memperbarui
Diuji pada stok Android 5.0 dan 6.0.1:
Per kode sumber di sini , build KitKat juga harus mendukung perintah.
sumber
Ini akan mematikan
zygote
proses root dan menyebabkan penyegaran sistem Android.Ini tidak memulai ulang perangkat keras ponsel Anda, hanya proses Android.
Secara default (di Linux), perintah
kill
/killall
memberikan proses yang anggun cara untuk mematikan, meskipun itu tergantung pada implementasi zygote apakah ini pada gilirannya dengan anggun mematikan aplikasi Android Anda yang sedang berjalan.Catatan: Anda harus menjalankan ini sebagai root, apakah Anda menggunakan
su -c
, terhubung melalui SSH atau ADB, atau metode lain.Nama lain untuk tindakan ini:
sumber
am restart
. Ini membutuhkan akses root.killall zygote
memberi proses cara yang anggun untuk ditutup? Pertanyaan menarik. Seseorang harus melihatzygote
kode sumber untuk mengetahui.