Tại sao lại khởi động lại adb của Hollywood. Tắt máy điện thoại của tôi nhanh hơn bình thường rất nhiều trước khi nó khởi động lại? Là nó bỏ qua các bước quan trọng?


13

Tôi sở hữu Samsung Galaxy S Relay 4G chạy Android 4.1.2. Ngoài ra, tôi đã cài đặt adb trên PC.

Khi tôi nhấn và giữ nút Nguồn, sau đó nhấn "Khởi động lại", điện thoại của tôi mất khoảng mười giây để tắt. Sau đó, nó tự khởi động lại.

Khi tôi vào adb rebootthay vào đó, điện thoại tắt nhanh hơn nhiều: tắt máy chỉ mất một giây hoặc lâu hơn. Sau đó, nó khởi động lại.

Những câu hỏi của tôi:

  1. Tại sao adb rebootnhanh hơn nhiều?

  2. Có phải nó chỉ đơn giản là bỏ qua hoạt hình tắt của nhà điều hành mạng di động, hay nó cũng bỏ qua một số thủ tục quan trọng hơn?

  3. Tôi có thể sử dụng adb rebootmỗi lần tôi muốn khởi động lại điện thoại không, hoặc có bất lợi nào khi làm như vậy không?

  4. (Tùy chọn) Làm thế nào để bạn biết?


Thêm thông tin (bạn có thể bỏ qua)

Tôi đã làm một số nghiên cứu trước khi đăng câu hỏi này. Nhưng tôi vẫn chưa được làm sáng tỏ. Hãy để tôi chỉ cho bạn những gì tôi đã khám phá.

Tetsuyuki Kobayashi của Công ty máy vi tính Kyoto giải thích trong slide 8 của trình chiếu PDF này rằng adb bao gồm ba phần: máy khách, máy chủ và trình nền. Máy khách và máy chủ chạy trên PC. Trình nền chạy trên điện thoại. Trong slide 11, anh giải thích rằng cả ba phần được xây dựng từ một thư mục nguồn. (Đây là thư mục này .)

Tôi đã thử tìm kiếm trong thư mục nguồn đó để tìm từreboot và đọc các phần của services.cpp , nhưng tôi vẫn không thể tìm ra cái gì adb rebootthực sự làm, hoặc byte nào gửi qua dây hoặc mã nào điện thoại chạy khi nó chạy nhận các byte đó. Tôi cũng chưa tìm ra câu trả lời cho bất kỳ câu hỏi nào của mình.


Liên quan : "Cách tốt nhất để khởi động lại Android thông qua dòng lệnh (từ xa) là gì?"


Có vẻ rất giống với những gì setprop sys.powerctl rebootsẽ làm. Tắt máy ô uế theo hướng dẫn để khởi động lại.
Firelord

Câu trả lời:


7

Dựa trên platform/system/corekho lưu trữ mà bạn đã liên kết ở trên, tôi nghĩ rằng khóa nằm trong libcutils/android_reboot.c. Và định nghĩa quan trọng là trong include/cutils/android_reboot.h; cụ thể là:

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

Thông thường trong chế độ khởi động lại bình thường (sử dụng nút thiết bị, v.v.), quá trình này kéo dài hơn vì (tôi giả sử) nó vượt quá phân vùng, giết tất cả các ứng dụng, đóng tất cả các nút fopen, như trong quá trình tắt máy. Có adb rebootthể so sánh với lệnh khởi động lại Linux (từ nơi nó đến): nó chỉ xóa đĩa và nhập khởi động lại mà không cần hủy các tiến trình hoặc ngắt kết nối các hệ thống tập tin. Tôi cũng thấy một lệnh remount nhanh được ban hành để đặt đĩa (trong phần lưu trữ hệ thống của thiết bị của chúng tôi) vào chế độ ro trước khi khởi động lại.

Tôi cũng tin rằng lệnh đã ban hành kernel_restart()được nhúng trong kernel. Xem ví dụ: http://www.phonesdevelopers.com/1730094/ . Cũng kiểm tra machine_restartcác cuộc gọi.


1
+1. Cảm ơn rât nhiều! Có an toàn cho tôi để làm adb rebootmỗi ngày mặc dù nó sẽ không làm một thủ tục tắt máy hoàn toàn?
không thể quênSupportsMonica

Nó không đau, nhưng bạn có thể có lý do chính đáng để làm điều đó. Nếu bạn thực sự muốn xóa một số dữ liệu được lưu trong bộ nhớ cache, có những giải pháp khác.
dùng344236

Các giải pháp khác như ...?
JohnyTex

2

Những người dùng Stack Exchange khác đã trả lời câu hỏi này trong các bài đăng ở nơi khác.

t0mm13b viết rằng, trong khi hiển thị hình ảnh động tắt máy của bạn:

  • Android đang tắt một cách an toàn các phần quan trọng của thời gian chạy.
  • HĐH cũng đang phát sóng ý định để nói với các ứng dụng và dịch vụ đóng một cách duyên dáng. Đến lượt chúng, xóa bộ nhớ cache của tất cả dữ liệu và tùy chọn chia sẻ, lưu những gì không có vào cơ sở dữ liệu sqlite, et cetera.

Nói cách khác, các ứng dụng và dịch vụ được tạo cơ hội để dọn dẹp một cách có hệ thống.

[Các lệnh như adb reboot] khắc nghiệt hơn. Họ thực sự bỏ qua các cơ chế an toàn để tắt máy duyên dáng.

Ở những nơi khác, Yury đưa ra một lời giải thích khác về những gì Android làm trong thời gian tắt máy duyên dáng:

  • Nó tắt ActivityManager. Tôi nghĩ rằng tắt ActivityManager có nghĩa là tất cả các hoạt động sẽ vượt qua vòng đời cần thiết và do đó, trạng thái của các hoạt động sẽ được lưu trữ. Nhưng tôi không chắc lắm. Tôi đã không kiểm tra.
  • Sau đó, Android tắt giao diện vô tuyến di động.
  • Sau đó, nó tắt Bluetooth.
  • Cuối cùng, nó cố gắng tắt MountService.

adb reboot là nhanh hơn bởi vì nó bỏ qua một số hoặc tất cả các bên trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.