“Adb reboot” neden yeniden başlatılmadan önce telefonumu normalden daha hızlı kapatıyor? Önemli adımlar atlıyor mu?


13

Android 4.1.2 çalıştıran bir Samsung Galaxy S Relay 4G sahibim. Ayrıca, bir PC'ye adb yükledim.

Güç düğmesine uzun süre basıp "Yeniden Başlat" a dokunduğumda, telefonumun kapanması yaklaşık on saniye sürüyor. Sonra kendini yeniden başlatır.

Ben girdiğinizde adb rebootyerine, telefon kapanır aşağı çok daha hızlı: kapatma sadece bir saniye kadar sürer. Sonra yeniden başlatılır.

Sorularım:

  1. Neden adb rebootbu kadar hızlı?

  2. Mobil şebeke operatörünün kapatma animasyonunu atlamak mı yoksa daha önemli prosedürleri atlamak mı?

  3. adb rebootTelefonu her yeniden başlatmak istediğimde kullanabilir miyim yoksa bunu yapmanın bir dezavantajı var mı?

  4. (İsteğe bağlı) Nereden biliyorsun?


Daha fazla bilgi (bunu atlayabilirsiniz)

Bu soruyu göndermeden önce biraz araştırma yaptım. Ama hala aydınlanmadım. Bana ne göstereyim mi keşfederler.

Kyoto Microcomputer Co.'dan Tetsuyuki Kobayashi, bu PDF slayt gösterisinin 8. slaytında adb'nin üç bölümden oluştuğunu açıklıyor : bir istemci, bir sunucu ve bir arka plan programı. İstemci ve sunucu bir bilgisayarda çalışır. Arka plan programı bir telefonda çalışır. Slayt 11'de üç parçanın da tek bir kaynak dizinden oluşturulduğunu açıklar. ( Bu dizin .)

Bu kaynak dizinde kelimeyi aramayareboot çalıştım ve services.cpp bölümlerini okudum , ancak hala ne yaptığını adb rebootveya tel üzerinden ne bayt gönderdiğini veya telefonun hangi kodu çalıştırdığını anlayamadım. bu baytları alır. Sorularımın cevabını da çözemedim.


İlgili : "Android'i komut satırı (uzaktan) üzerinden yeniden başlatmanın en iyi yolu nedir?"


Yapacaklarına çok benziyor setprop sys.powerctl reboot. Temiz olmayan bir kapatma ve ardından yeniden başlatma talimatı.
Firelord

Yanıtlar:


7

platform/system/coreYukarıda bağladığınız depoya dayanarak , anahtarın içinde olduğunu düşünüyorum libcutils/android_reboot.c. Ve önemli tanımlar include/cutils/android_reboot.h; yani:

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

Genellikle normal yeniden başlatma modunda (cihaz düğmesi, vb. Kullanarak), işlem daha uzun çünkü (varsayıyorum) bölümü taklit eder, tüm uygulamaları öldürür, kapatma işleminde olduğu gibi tüm fopen düğümlerini kapatır. adb reboot(Bu giriyor itibaren) Linux yeniden başlatma komutuyla karşılaştırılabilir: sadece diski temizler ve ilk ölüm süreçlerinin veya Ayırma işlemi dosya sistemleri olmadan yeniden başlatma girin. Ayrıca, yeniden başlatmadan önce diski (bizim durumumuzda cihazın depolama kısmı) ro moduna geçirmek için verilen hızlı bir yeniden montaj komutu görüyorum.

Ayrıca verilen komutun kernel_restart()çekirdeğe gömülü olduğuna inanıyorum . Bkz. Örneğin http://www.phonesdevelopers.com/1730094/ . Ayrıca machine_restartaramaları da kontrol edin .


1
+1. Çok teşekkür ederim! adb rebootTam kapanma prosedürü yapmasa da her gün yapmam güvenli mi?
unforgettableidSupportsMonica

Zarar vermez, ancak bunu yapmak için iyi bir nedeniniz olabilir. Eğer gerçekten önbelleğe alınmış bazı verileri silmek istiyorsanız, yine de başka çözümler var.
user3344236

... gibi diğer çözümler?
JohnyTex

2

Diğer Stack Exchange kullanıcıları bu soruyu başka yerlerdeki yayınlarda zaten yanıtladı.

t0mm13b , operatörünüzün kapatma animasyonunu görüntülerken şunları yazar :

  • Android, çalışma zamanının önemli parçalarını güvenle kapatıyor.
  • İşletim sistemi ayrıca uygulamalara ve hizmetlere incelikle kapanmalarını söyleme niyetlerini de yayınlıyor. Bunlar sırayla tüm önbelleklerini ve paylaşılan tercihleri ​​temizler, sqlite veritabanına, vb.

Diğer bir deyişle, uygulamalara ve hizmetlere temizleme işlemlerini sistematik olarak yapma şansı verilir.

[Gibi komutlar adb reboot] daha serttir. Zarif bir kapanma için güvenlik mekanizmalarını atlarlar.

Başka yerlerde, Yury, Android'in zarif bir kapatma sırasında neler yaptığı hakkında başka bir açıklama sunuyor :

  • ActivityManager'ı kapatır. ActivityManager'ı kapatmak, tüm faaliyetlerin gerekli yaşam döngüsünü geçeceği ve dolayısıyla faaliyet durumlarının kaydedileceği anlamına geliyor. Ama emin değilim. Kontrol etmedim.
  • Ardından, Android hücresel radyo arayüzünü kapatır.
  • Bundan sonra Bluetooth'u kapatır.
  • Son olarak, MountService'i kapatmaya çalışır.

adb reboot daha hızlıdır, çünkü yukarıdakilerin bir kısmını veya tamamını atlar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.