บทช่วยสอนนี้แสดงวิธีหยุดกระบวนการพื้นหลังของแอปบน 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)
- ติดตั้งไดรเวอร์ USB สำหรับอุปกรณ์ OEM โดยเฉพาะของคุณ (Google ให้รายชื่อบางส่วนไว้) ไดรเวอร์ USB สากลที่นี่).
- ดาวน์โหลด ไบนารี ADB สำหรับระบบปฏิบัติการเฉพาะของคุณ (หน้าต่าง, แม็ค, ลินุกซ์). ลิงก์เหล่านี้จะชี้ไปที่เวอร์ชันล่าสุดของไบนารีเสมอ
- แยกเนื้อหาของไฟล์ ZIP ลงในโฟลเดอร์ที่เข้าถึงได้ง่ายบนพีซีของคุณ
- ไปที่แอปการตั้งค่าบนโทรศัพท์ของคุณแล้วแตะตัวเลือกเกี่ยวกับโทรศัพท์
- ค้นหาหมายเลขบิลด์แล้วแตะ 7 ครั้งเพื่อเปิดใช้งานโหมดนักพัฒนาซอฟต์แวร์
- กลับไปที่เมนูหลักการตั้งค่าแล้วป้อนตัวเลือกนักพัฒนาเพื่อให้คุณสามารถเปิดใช้งานโหมดแก้ไขข้อบกพร่อง USB ได้
- เสียบโทรศัพท์ของคุณเข้ากับคอมพิวเตอร์และเปลี่ยนจากโหมด "ชาร์จเท่านั้น" เป็นโหมด "ถ่ายโอนไฟล์ (MTP)" สิ่งนี้ไม่จำเป็นในทุกอุปกรณ์ แต่อุปกรณ์จำนวนมากต้องใช้สิ่งนี้เป็นมาตรการรักษาความปลอดภัยก่อนที่จะอนุญาตให้ ADB ทำงานได้
- กลับไปที่พีซีแล้วเรียกดูไดเร็กทอรีที่คุณแตกไบนารี ADB
- เปิด Command Prompt หรือ Terminal ในไดเรกทอรี ADB ของคุณ สำหรับผู้ใช้ Windows สามารถทำได้โดยกด Shift ค้างไว้แล้วคลิกขวา จากนั้นเลือกตัวเลือก “open command prompt here” (ผู้ใช้ Windows 10 บางรายอาจเห็น "command prompt" แทนที่ด้วย "PowerShell")
- เมื่อคุณอยู่ใน Command Prompt หรือ Terminal ให้ป้อนคำสั่งต่อไปนี้:
adb devices
- การดำเนินการนี้จะเริ่มต้น ADB daemon หากยังไม่ได้เปิดตัว เพียงรอให้เสร็จสิ้น หากนี่เป็นครั้งแรกที่คุณใช้งาน ADB คุณจะเห็นข้อความแจ้งบนโทรศัพท์ที่ขอให้คุณอนุญาตการเชื่อมต่อกับคอมพิวเตอร์ อนุญาตให้เข้าถึงการแก้ไขจุดบกพร่อง USB ที่นี่
- ในตอนนี้ หากคุณรันคำสั่ง adb devices อีกครั้งจากขั้นตอนที่ 10 พรอมต์คำสั่ง/เทอร์มินัลจะพิมพ์หมายเลขซีเรียลของอุปกรณ์ของคุณ หากเป็นเช่นนั้น คุณก็พร้อมที่จะเดินหน้าต่อไป ถ้าไม่เช่นนั้น แสดงว่าไดรเวอร์ USB อาจติดตั้งไม่ถูกต้อง
- จากนั้นคุณจะต้องค้นหาชื่อแพ็คเกจสำหรับแอปพลิเคชันที่คุณต้องการหยุดกระบวนการในเบื้องหลัง คุณสามารถทำได้โดยการติดตั้งไฟล์ ตัวตรวจสอบแอป แอปพลิเคชันบนโทรศัพท์ของคุณ
- กลับไปที่ Command Prompt แล้วป้อนคำสั่งต่อไปนี้:
adb shell
- ตอนนี้รันคำสั่งต่อไปนี้เพื่อเพิ่มกระบวนการพื้นหลังของแอปพลิเคชัน:
cmd appops set
RUN_IN_BACKGROUND ignore - หากคุณต้องการคืนค่าการเปลี่ยนแปลงที่คุณเพิ่งทำและอนุญาตให้ประมวลผลพื้นหลังของแอปอีกครั้ง ให้ป้อนคำสั่งนี้:
cmd appops set
RUN_IN_BACKGROUND allow - คุณจะรู้ว่ามันใช้งานได้หากนำคุณกลับไปที่พรอมต์เชลล์ ADB อื่นและไม่แสดงข้อความแสดงข้อผิดพลาด
คำอธิบาย
คำสั่งนี้ทำงานอย่างไรกันแน่คืออนุญาตให้คุณจำกัดการอนุญาตที่ซ่อนอยู่ซึ่งโดยปกติแล้วผู้ใช้ไม่สามารถเข้าถึงได้ในแอปการตั้งค่า การอนุญาตนี้เรียกว่าการอนุญาต RUN_IN_BACKGROUND และวิธีเดียวที่สามารถแก้ไขได้คือใช้ "cmd appops" ซึ่งเป็นอินเทอร์เฟซบรรทัดคำสั่งสำหรับ "App Ops" - ระบบการจัดการสิทธิ์ที่ผู้ใช้เห็นของ Google
Google เพิ่มคำสั่ง ADB ที่ซ่อนอยู่ซึ่งช่วยให้คุณสามารถจำกัดแอปพลิเคชันใด ๆ ไม่ให้ได้รับเจตนาในการออกอากาศโดยนัย (เช่น แอปจะเริ่มทำงานในเบื้องหลัง) และยังป้องกันไม่ให้แอปพลิเคชันเหล่านั้นกำหนดเวลาบริการในเบื้องหลังโดยไม่ใช้ JobScheduler (เช่น แอปตื่นขึ้นมาในเวลาที่ไม่เหมาะสม ทำให้แบตเตอรี่หมด) จริงๆ แล้ว คำสั่งนี้มีไว้สำหรับนักพัฒนาที่ต้องการจำลองว่าแอปของพวกเขาจะทำงานอย่างไรภายใต้สภาวะหน่วยความจำเหลือน้อย แต่โชคดีที่เราสามารถนำไปใช้งานได้เอง
ด้วยการลบการพึ่งพาบริการพื้นหลังของแอปและตัวรับการออกอากาศโดยนัยที่ลงทะเบียนไว้ นักพัฒนาสามารถเพิ่มประสิทธิภาพแอปพลิเคชันของตนให้ทำงานได้ดีขึ้นบนอุปกรณ์ที่มีหน่วยความจำต่ำ Google กล่าวว่าแอปพลิเคชันที่ได้รับการปรับให้เหมาะกับอุปกรณ์ประเภทนี้หรือที่อยู่ในสภาวะหน่วยความจำต่ำ สามารถปรับปรุงทั้งประสิทธิภาพและประสบการณ์ของผู้ใช้ได้ ที่ Google I/O ในปีนี้ บริษัทได้ประกาศ Android เวอร์ชันดัดแปลงที่เรียกว่า Android Goซึ่งจะใช้กับสมาร์ทโฟนที่มีหน่วยความจำเหลือน้อยมาก ดังนั้นเราจึงสันนิษฐานว่าคำสั่งนี้จะเป็นประโยชน์สำหรับนักพัฒนาที่มุ่งเป้าไปที่แพลตฟอร์มนั้น
ไม่ว่าในกรณีใด คำสั่งนี้อาจมีประโยชน์สำหรับผู้ใช้ทั่วไป แต่ควรระวังสิ่งที่คุณจำกัดไว้ที่นี่ แอปต่างๆ เช่น Hangouts หรือ Facebook จะหยุดการซิงค์ในพื้นหลังโดยสิ้นเชิงจนกว่าคุณจะเปิดขึ้นมา ซึ่งหากนี่คือสิ่งที่คุณต้องการ ฉันแน่ใจว่าคุณไม่รังเกียจ แต่อย่าแปลกใจเมื่ออีเมลหรือข้อความของคุณล่าช้าหากคุณเรียกใช้คำสั่งนี้ในแอปที่ต้องอาศัยผู้รับในเบื้องหลัง