ตรึงกระบวนการพื้นหลังโดยไม่ต้องรูท (Android 7.0+)

บทช่วยสอนนี้แสดงวิธีหยุดกระบวนการพื้นหลังของแอปบน Android 7.0 และ 7.1 Nougat โดยไม่ต้องรูทโดยใช้คำสั่ง ADB ที่ซ่อนอยู่

Android ถือเป็นแพลตฟอร์มมือถือที่ "ทรงพลัง" มากกว่าเมื่อเทียบกับ iOS มาโดยตลอด เนื่องจากแอปพลิเคชันบุคคลที่สามมีอิสระมากเพียงใด ซึ่งช่วยให้ระบบอัตโนมัติเกิดขึ้นได้มากเพียงเพราะแอปพลิเคชัน Android สามารถทำงานต่างๆ ได้มากขึ้นในขณะที่แอปพลิเคชันทำงานในเบื้องหลัง อย่างไรก็ตาม สิ่งนี้มาพร้อมกับข้อเสียเนื่องจากเป็นการเปิดประตูเพื่อให้แบตเตอรี่หมดมากขึ้น เนื่องจากกระบวนการเบื้องหลังที่ทำงานบนอุปกรณ์

สิ่งหนึ่งที่ต้องรู้ว่าคุณกำลังโหลดแอปพลิเคชันที่ทำงานอยู่เบื้องหลังในโทรศัพท์ของคุณ เนื่องจากคุณยินดีที่จะสละอายุการใช้งานแบตเตอรี่บางส่วนเพื่อประโยชน์ที่ได้รับ เป็นอีกเรื่องหนึ่งหากคุณเพียงดาวน์โหลดแอปพลิเคชันแบบดั้งเดิมที่ไม่ได้รับการปรับให้เหมาะสมและทำงานอยู่เบื้องหลังเมื่อคุณไม่ต้องการหรือจำเป็นด้วยซ้ำ Google ได้ดำเนินการแก้ไขปัญหานี้โดยวางข้อจำกัดมากขึ้นเรื่อยๆ เกี่ยวกับสิ่งที่แอปพลิเคชันสามารถทำได้ พื้นหลังและการเปิดตัว Android O ทำให้กระบวนการเบื้องหลัง/ตัวรับมีข้อจำกัดมากที่สุด ไกล.

อย่างไรก็ตาม ผู้ใช้ส่วนใหญ่จะไม่เห็น Android O บนอุปกรณ์ของตนเป็นเวลาหลายเดือนนับจากนี้ (หากไม่เห็นเลย) แต่ถ้าคุณกำลังวิ่งอยู่ ระบบปฏิบัติการ Android 7.0 หรือ Android 7.1มีเคล็ดลับง่ายๆ ที่คุณสามารถทำได้ด้วยตนเอง ป้องกันไม่ให้แอปพลิเคชันทำงานในพื้นหลัง - และมัน ไม่ต้องการรูท หรือแอปพลิเคชันบุคคลที่สาม. สิ่งนี้มีประสิทธิภาพมากกว่าที่ Greenify หรือแอปอย่าง Brevent นำเสนอ เนื่องจากหากไม่มีการเข้าถึงรูท แอปเหล่านั้นจะถูกจำกัดในสิ่งที่พวกเขาสามารถทำได้ แต่ด้วยเคล็ดลับนี้ ตอนนี้คุณสามารถทำได้ บล็อกแอพเช่น Facebook หรือ Hangouts จากการทำงานในเบื้องหลัง - จะทำงานเฉพาะเมื่อมีการใช้งานเท่านั้น!


การจำกัดกระบวนการในเบื้องหลังบทช่วยสอน

ความต้องการ:

  • อุปกรณ์ Android Nougat (7.0 หรือ 7.1)
  1. ติดตั้งไดรเวอร์ USB สำหรับอุปกรณ์ OEM โดยเฉพาะของคุณ (Google ให้รายชื่อบางส่วนไว้) ไดรเวอร์ USB สากลที่นี่).
  2. ดาวน์โหลด ไบนารี ADB สำหรับระบบปฏิบัติการเฉพาะของคุณ (หน้าต่าง, แม็ค, ลินุกซ์). ลิงก์เหล่านี้จะชี้ไปที่เวอร์ชันล่าสุดของไบนารีเสมอ
  3. แยกเนื้อหาของไฟล์ ZIP ลงในโฟลเดอร์ที่เข้าถึงได้ง่ายบนพีซีของคุณ
  4. ไปที่แอปการตั้งค่าบนโทรศัพท์ของคุณแล้วแตะตัวเลือกเกี่ยวกับโทรศัพท์
  5. ค้นหาหมายเลขบิลด์แล้วแตะ 7 ครั้งเพื่อเปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์
  6. กลับไปที่เมนูหลักการตั้งค่าแล้วป้อนตัวเลือกนักพัฒนาเพื่อให้คุณสามารถเปิดใช้งานโหมดแก้ไขข้อบกพร่อง USB ได้
  7. เสียบโทรศัพท์ของคุณเข้ากับคอมพิวเตอร์และเปลี่ยนจากโหมด "ชาร์จเท่านั้น" เป็นโหมด "ถ่ายโอนไฟล์ (MTP)" สิ่งนี้ไม่จำเป็นในทุกอุปกรณ์ แต่อุปกรณ์จำนวนมากต้องใช้สิ่งนี้เป็นมาตรการรักษาความปลอดภัยก่อนที่จะอนุญาตให้ ADB ทำงานได้
  8. กลับไปที่พีซีแล้วเรียกดูไดเร็กทอรีที่คุณแตกไบนารี ADB
  9. เปิด Command Prompt หรือ Terminal ในไดเรกทอรี ADB ของคุณ สำหรับผู้ใช้ Windows สามารถทำได้โดยกด Shift ค้างไว้แล้วคลิกขวา จากนั้นเลือกตัวเลือก “open command prompt here” (ผู้ใช้ Windows 10 บางรายอาจเห็น "command prompt" แทนที่ด้วย "PowerShell")
  10. เมื่อคุณอยู่ใน Command Prompt หรือ Terminal ให้ป้อนคำสั่งต่อไปนี้: adb devices
  11. การดำเนินการนี้จะเริ่มต้น ADB daemon หากยังไม่ได้เปิดตัว เพียงรอให้เสร็จสิ้น หากนี่เป็นครั้งแรกที่คุณใช้งาน ADB คุณจะเห็นข้อความแจ้งบนโทรศัพท์ที่ขอให้คุณอนุญาตการเชื่อมต่อกับคอมพิวเตอร์ อนุญาตให้เข้าถึงการแก้ไขจุดบกพร่อง USB ที่นี่
  12. ในตอนนี้ หากคุณรันคำสั่ง adb devices อีกครั้งจากขั้นตอนที่ 10 พรอมต์คำสั่ง/เทอร์มินัลจะพิมพ์หมายเลขซีเรียลของอุปกรณ์ของคุณ หากเป็นเช่นนั้น คุณก็พร้อมที่จะเดินหน้าต่อไป ถ้าไม่เช่นนั้น แสดงว่าไดรเวอร์ USB อาจติดตั้งไม่ถูกต้อง
  13. จากนั้นคุณจะต้องค้นหาชื่อแพ็คเกจสำหรับแอปพลิเคชันที่คุณต้องการหยุดกระบวนการในเบื้องหลัง คุณสามารถทำได้โดยการติดตั้งไฟล์ ตัวตรวจสอบแอป แอปพลิเคชันบนโทรศัพท์ของคุณ
  14. กลับไปที่ Command Prompt แล้วป้อนคำสั่งต่อไปนี้: adb shell
  15. ตอนนี้รันคำสั่งต่อไปนี้เพื่อเพิ่มกระบวนการพื้นหลังของแอปพลิเคชัน: cmd appops set RUN_IN_BACKGROUND ignore
  16. หากคุณต้องการคืนค่าการเปลี่ยนแปลงที่คุณเพิ่งทำและอนุญาตให้ประมวลผลพื้นหลังของแอปอีกครั้ง ให้ป้อนคำสั่งนี้: cmd appops set RUN_IN_BACKGROUND allow
  17. คุณจะรู้ว่ามันใช้งานได้หากนำคุณกลับไปที่พรอมต์เชลล์ ADB อื่นและไม่แสดงข้อความแสดงข้อผิดพลาด

คำอธิบาย

คำสั่งนี้ทำงานอย่างไรกันแน่คืออนุญาตให้คุณจำกัดการอนุญาตที่ซ่อนอยู่ซึ่งโดยปกติแล้วผู้ใช้ไม่สามารถเข้าถึงได้ในแอปการตั้งค่า การอนุญาตนี้เรียกว่าการอนุญาต RUN_IN_BACKGROUND และวิธีเดียวที่สามารถแก้ไขได้คือใช้ "cmd appops" ซึ่งเป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับ "App Ops" - ระบบการจัดการสิทธิ์ที่ผู้ใช้เห็นของ Google

Google เพิ่มคำสั่ง ADB ที่ซ่อนอยู่ซึ่งช่วยให้คุณสามารถจำกัดแอปพลิเคชันใด ๆ ไม่ให้ได้รับเจตนาในการออกอากาศโดยนัย (เช่น แอปจะเริ่มทำงานในเบื้องหลัง) และยังป้องกันไม่ให้แอปพลิเคชันเหล่านั้นกำหนดเวลาบริการในเบื้องหลังโดยไม่ใช้ JobScheduler (เช่น แอปตื่นขึ้นมาในเวลาที่ไม่เหมาะสม ทำให้แบตเตอรี่หมด) จริงๆ แล้ว คำสั่งนี้มีไว้สำหรับนักพัฒนาที่ต้องการจำลองว่าแอปของพวกเขาจะทำงานอย่างไรภายใต้สภาวะหน่วยความจำเหลือน้อย แต่โชคดีที่เราสามารถนำไปใช้งานได้เอง

ด้วยการลบการพึ่งพาบริการพื้นหลังของแอปและตัวรับการออกอากาศโดยนัยที่ลงทะเบียนไว้ นักพัฒนาสามารถเพิ่มประสิทธิภาพแอปพลิเคชันของตนให้ทำงานได้ดีขึ้นบนอุปกรณ์ที่มีหน่วยความจำต่ำ Google กล่าวว่าแอปพลิเคชันที่ได้รับการปรับให้เหมาะกับอุปกรณ์ประเภทนี้หรือที่อยู่ในสภาวะหน่วยความจำต่ำ สามารถปรับปรุงทั้งประสิทธิภาพและประสบการณ์ของผู้ใช้ได้ ที่ Google I/O ในปีนี้ บริษัทได้ประกาศ Android เวอร์ชันดัดแปลงที่เรียกว่า Android Goซึ่งจะใช้กับสมาร์ทโฟนที่มีหน่วยความจำเหลือน้อยมาก ดังนั้นเราจึงสันนิษฐานว่าคำสั่งนี้จะเป็นประโยชน์สำหรับนักพัฒนาที่มุ่งเป้าไปที่แพลตฟอร์มนั้น

ไม่ว่าในกรณีใด คำสั่งนี้อาจมีประโยชน์สำหรับผู้ใช้ทั่วไป แต่ควรระวังสิ่งที่คุณจำกัดไว้ที่นี่ แอปต่างๆ เช่น Hangouts หรือ Facebook จะหยุดการซิงค์ในพื้นหลังโดยสิ้นเชิงจนกว่าคุณจะเปิดขึ้นมา ซึ่งหากนี่คือสิ่งที่คุณต้องการ ฉันแน่ใจว่าคุณไม่รังเกียจ แต่อย่าแปลกใจเมื่ออีเมลหรือข้อความของคุณล่าช้าหากคุณเรียกใช้คำสั่งนี้ในแอปที่ต้องอาศัยผู้รับในเบื้องหลัง