2012-11-05 39 views
23

Câu hỏi

Điều gì làm adb shell startadb shell stop thực sự làm gì?'Bắt ​​đầu/dừng adb shell' làm gì?

Mô tả

Tôi nghĩ họ gọi /system/bin/start/system/bin/stop. Nhưng hai thực thi này không đưa ra bất kỳ đầu mối nào về những gì chúng làm. Khi thử nghiệm trên một thiết bị thực, tôi thấy quá trình zygote được bắt đầu và dừng lại. Vì vậy, hai lệnh này dường như kiểm soát thời gian chạy Android (tương ứng với các phần màu vàng và màu xanh trong hình bên dưới).

Android Architecture

Nhưng những gì chính xác các quy trình/dịch vụ được khởi động/dừng với hai lệnh dưới đây?

+0

nguồn: https://android.googlesource.com/platform/system/core/+/brillo-m8-release/toolbox/start_stop.cpp –

Trả lời

1

Run này trên thiết bị của bạn

grep ^service /init*rc 
+0

Cho đến thời gian gần đây, thông cáo chính thức android nhất không bao gồm ' grep' –

+1

Sử dụng 'adb pull' để sao chép tất cả các tệp đó vào máy trạm của bạn và sau đó chạy grep từ đó. –

+0

@ChrisStratton: biên dịch/tải xuống 'busybox' và chạy' busybox grep'. – pevik

9

Về cơ bản, tất cả các dịch vụ Android của bạn được khởi động lại; những thứ được tạo và đăng ký trong SystemServer.java. Điều này được gọi trong "Ngữ cảnh của Zygote". Vì vậy, có, Zygote được dừng lại.

Tất cả các dịch vụ của bạn được đăng ký với ServiceManager trong Android sẽ bị xóa trong phạm vi ServiceManager. Để khởi động lại chúng, hãy thực hiện adb shell start.

Cũng lưu ý rằng SystemServer được bắt đầu bởi Zygote, vì vậy init.rc cho biết rằng nếu Zygote bị dừng, thì ngay cả SystemServer cũng phải dừng lại. Thậm chí SurfaceFlinger chết, vì nó bắt đầu từ SystemServer nhưng nguyên bản.

1

Tôi cũng đã tự hỏi "dừng" trên Android cũng thế nào. Học được từ một người nào đó rằng "dừng" dừng AP được render bởi SurfaceFlinger.

Đã thử với lệnh như dưới đây. Thực hiện lệnh, chờ một vài giây và sau đó thực hiện "dừng" trên Android. Lệnh này tiếp tục in số tăng và tạo các tệp .txt. Vì vậy, có lẽ nó chỉ dừng phần Android trong khi phần Linux vẫn hoạt động. Chỉ là FYI.

busybox sh -c 'i=0;while [ $i -ne 100 ]; do echo $i >> count.txt; sleep 1; i=$(($i + 1)); echo $i; touch "$i.txt"; done;' 
Các vấn đề liên quan