การใช้คลื่นวิทยุไร้สายเพื่อโอนข้อมูลอาจเป็นสาเหตุสำคัญที่สุดอย่างหนึ่งที่ทำให้แบตเตอรี่ของแอปหมด คุณต้องทำความเข้าใจว่ารูปแบบการเชื่อมต่อจะส่งผลต่อฮาร์ดแวร์วิทยุพื้นฐานอย่างไร เพื่อลดการใช้แบตเตอรี่ที่เกี่ยวข้องกับกิจกรรมเครือข่าย
ส่วนนี้จะแนะนำเครื่องสถานะวิทยุไร้สายและอธิบายวิธีที่โมเดลการเชื่อมต่อของแอปโต้ตอบกับเครื่องสถานะวิทยุไร้สาย จากนั้นจะแนะนำเทคนิคต่างๆ ซึ่งหากทำตามแล้วจะช่วยลดผลกระทบที่การใช้ข้อมูลของแอป มีต่อแบตเตอรี่
เครื่องสถานะวิทยุ
วิทยุไร้สายในอุปกรณ์ของผู้ใช้มีฟีเจอร์ประหยัดพลังงานในตัวที่ ช่วยลดปริมาณพลังงานแบตเตอรี่ที่ใช้ เมื่อเปิดใช้งานอย่างเต็มรูปแบบ วิทยุไร้สายจะใช้พลังงานมาก แต่เมื่อไม่ได้ใช้งานหรืออยู่ในโหมดสแตนด์บาย วิทยุจะใช้พลังงานน้อยมาก
ปัจจัยสำคัญที่ต้องทราบคือวิทยุไม่สามารถเปลี่ยนจากโหมดสแตนด์บายเป็น โหมดทำงานเต็มรูปแบบได้ในทันที มีระยะเวลาหน่วงที่เกี่ยวข้องกับการ "เปิด" สัญญาณวิทยุ ดังนั้นแบตเตอรี่จะเปลี่ยนจากสถานะพลังงานสูงไปเป็นสถานะพลังงานต่ำอย่างช้าๆ เพื่อประหยัดพลังงานเมื่อไม่ได้ใช้งาน ในขณะที่พยายามลดเวลาในการตอบสนองที่เกี่ยวข้องกับการ "เปิด" วิทยุ
เครื่องสถานะสำหรับวิทยุเครือข่าย 3G ทั่วไปประกอบด้วยสถานะพลังงาน 3 สถานะ ดังนี้
- กำลังไฟเต็ม: ใช้เมื่อการเชื่อมต่อทำงานอยู่ ซึ่งจะช่วยให้อุปกรณ์ โอนข้อมูลได้ในอัตราสูงสุดที่เป็นไปได้
- ประหยัดพลังงาน: สถานะระดับกลางที่ลดการใช้พลังงานแบตเตอรี่ลงประมาณ 50%
- สแตนด์บาย: สถานะที่ใช้พลังงานน้อยที่สุดซึ่งไม่มีการเชื่อมต่อเครือข่าย ที่ใช้งานอยู่
แม้ว่าสถานะต่ำและสแตนด์บายจะใช้แบตเตอรี่น้อยกว่ามาก แต่ก็ทำให้คำขอเครือข่ายมีเวลาในการตอบสนองที่นานขึ้นอย่างมากด้วย การกลับสู่กำลังไฟเต็มจาก สถานะต่ำจะใช้เวลาประมาณ 1.5 วินาที และการเปลี่ยนจากสแตนด์บายเป็นกำลังไฟเต็ม อาจใช้เวลามากกว่า 2 วินาที
เครื่องสถานะจะใช้การหน่วงเวลาเพื่อเลื่อนการเปลี่ยน ไปเป็นสถานะที่ใช้พลังงานต่ำกว่าเพื่อลดเวลาในการตอบสนอง รูปที่ 1 ใช้เวลาของ AT&T สำหรับวิทยุ 3G ทั่วไป
รูปที่ 1 เครื่องสถานะวิทยุไร้สาย 3G ทั่วไป
เครื่องสถานะวิทยุในอุปกรณ์แต่ละเครื่อง โดยเฉพาะอย่างยิ่งการเปลี่ยนที่เกี่ยวข้อง ดีเลย์ ("เวลาท้าย") และเวลาในการเริ่มต้น จะแตกต่างกันไปตามวิทยุไร้สาย เทคโนโลยีที่ใช้ (3G, LTE, 5G และอื่นๆ) และกำหนดค่าโดย เครือข่ายของผู้ให้บริการที่อุปกรณ์ทำงานอยู่
หน้านี้อธิบายเครื่องสถานะตัวแทนสำหรับวิทยุไร้สาย 3G ทั่วไป โดยอิงตามข้อมูลที่ AT&T ให้ไว้ อย่างไรก็ตาม หลักการทั่วไปและ แนวทางปฏิบัติแนะนำที่ได้นั้นใช้ได้กับการใช้งานวิทยุไร้สายทั้งหมด
วิธีนี้มีประสิทธิภาพเป็นพิเศษสำหรับการท่องเว็บผ่านอุปกรณ์เคลื่อนที่ทั่วไป เนื่องจากจะช่วยป้องกันเวลาในการตอบสนองที่ไม่พึงประสงค์ขณะที่ผู้ใช้ท่องเว็บ นอกจากนี้ ระยะเวลาการทำงานที่ค่อนข้างสั้นยังช่วยให้มั่นใจได้ว่าเมื่อเซสชันการท่องเว็บสิ้นสุดลงแล้ว วิทยุจะเปลี่ยนไปใช้สถานะที่ใช้พลังงานต่ำลงได้
แต่น่าเสียดายที่แนวทางนี้อาจทำให้แอปทำงานไม่มีประสิทธิภาพในระบบปฏิบัติการสมาร์ทโฟนสมัยใหม่ เช่น Android ซึ่งแอปจะทำงานทั้งในเบื้องหน้า (ซึ่งความหน่วงเป็นสิ่งสำคัญ) และในเบื้องหลัง (ซึ่งควรให้ความสำคัญกับอายุการใช้งานแบตเตอรี่)
แอปส่งผลต่อเครื่องสถานะวิทยุอย่างไร
ทุกครั้งที่คุณสร้างการเชื่อมต่อเครือข่ายใหม่ วิทยุจะเปลี่ยนไปเป็น สถานะเต็มกำลัง ในกรณีของเครื่องสถานะวิทยุ 3G ทั่วไปที่อธิบายไว้ ก่อนหน้านี้ เครื่องจะยังคงทำงานที่กำลังเต็มตลอดระยะเวลาการโอนของคุณ รวมถึง เวลาส่วนท้ายอีก 5 วินาที ตามด้วย 12 วินาทีในสถานะพลังงานต่ำ ดังนั้นสำหรับอุปกรณ์ 3G ทั่วไป ทุกเซสชันการโอนข้อมูลจะทำให้ วิทยุใช้พลังงานอย่างน้อย 18 วินาที
ในทางปฏิบัติ หมายความว่าแอปที่โอนข้อมูล 1 วินาที 3 ครั้งต่อนาทีจะทำให้วิทยุไร้สายทำงานอยู่ตลอดเวลา และจะกลับไปใช้พลังงานสูงทันทีที่เข้าสู่โหมดสแตนด์บาย
รูปที่ 2 การใช้พลังงานคลื่นความถี่วิทยุแบบไร้สายสัมพัทธ์สำหรับการโอนข้อมูล 1 วินาที
3 ครั้งทุกนาที ตัวเลขนี้ไม่รวมเวลาในการตอบสนองของ "การเพิ่มพลัง" ระหว่างการทดสอบ
ในทางตรงกันข้าม หากแอปเดียวกันนี้รวมการโอนข้อมูลไว้ด้วยกัน โดยทำการโอนครั้งละ 3 วินาทีทุกๆ นาที จะทำให้วิทยุอยู่ในสถานะกำลังสูงเป็นเวลาเพียง 20 วินาทีต่อนาทีเท่านั้น ซึ่งจะช่วยให้วิทยุ อยู่ในโหมดสแตนด์บายได้ 40 วินาทีในทุกๆ 1 นาที จึงช่วยลดการใช้แบตเตอรี่ลงได้อย่างมาก
รูปที่ 3 การใช้กำลังคลื่นความถี่วิทยุแบบไร้สายสัมพัทธ์สำหรับการโอน 3 วินาที
ซึ่งทำงานทุกๆ 1 นาที
เทคนิคการเพิ่มประสิทธิภาพ
เมื่อทราบแล้วว่าการเข้าถึงเครือข่ายส่งผลต่ออายุการใช้งานแบตเตอรี่อย่างไร เรามาพูดถึง สิ่งที่คุณทำได้เพื่อช่วยลดการใช้แบตเตอรี่ พร้อมทั้งมอบประสบการณ์การใช้งานที่รวดเร็วและลื่นไหล กัน
การโอนข้อมูลแบบแพ็กเกจ
ดังที่ระบุไว้ในส่วนก่อนหน้า การจัดกลุ่มการโอนข้อมูลเพื่อให้คุณโอนข้อมูลมากขึ้นแต่บ่อยน้อยลงเป็นวิธีที่ดีที่สุดวิธีหนึ่งในการปรับปรุงประสิทธิภาพแบตเตอรี่
แน่นอนว่าคุณอาจทำเช่นนี้ไม่ได้เสมอไปหากแอปต้องรับหรือส่งข้อมูลทันทีเพื่อตอบสนองต่อการกระทำของผู้ใช้ คุณสามารถลดปัญหานี้ได้โดยการ คาดการณ์และดึงข้อมูลล่วงหน้า สถานการณ์อื่นๆ เช่น การส่งบันทึกหรือข้อมูลวิเคราะห์ไปยังเซิร์ฟเวอร์และการโอนข้อมูลอื่นๆ ที่แอปเริ่มต้นซึ่งไม่เร่งด่วน เหมาะอย่างยิ่งสำหรับการจัดกลุ่มและการรวม ดูการเพิ่มประสิทธิภาพ งานที่เริ่มจากแอปเพื่อดู เคล็ดลับในการกำหนดเวลาการโอนเครือข่ายในเบื้องหลัง
ดึงข้อมูลล่วงหน้า
การดึงข้อมูลล่วงหน้าเป็นอีกวิธีที่มีประสิทธิภาพในการลดจำนวนเซสชันการโอนข้อมูลอิสระที่แอปเรียกใช้ เมื่อใช้การดึงข้อมูลล่วงหน้า เมื่อผู้ใช้ ดำเนินการในแอป แอปจะคาดการณ์ว่าข้อมูลใดที่น่าจะ จำเป็นสำหรับชุดการดำเนินการของผู้ใช้ถัดไป และดึงข้อมูลนั้นในครั้งเดียว ผ่านการเชื่อมต่อเดียวที่ความจุเต็ม
การโอนข้อมูลล่วงหน้าจะช่วยลดจำนวนการเปิดใช้งานวิทยุ ที่จำเป็นต่อการดาวน์โหลดข้อมูล ด้วยเหตุนี้ คุณจึงไม่เพียงประหยัดแบตเตอรี่ แต่ยังปรับปรุงเวลาในการตอบสนอง ลดแบนด์วิดท์ที่จำเป็น และลดเวลาในการดาวน์โหลด อีกด้วย
การดึงข้อมูลล่วงหน้ายังช่วยปรับปรุงประสบการณ์การใช้งานของผู้ใช้ด้วยการลดเวลาในการตอบสนองในแอป ที่เกิดจากการรอให้การดาวน์โหลดเสร็จสมบูรณ์ก่อนที่จะดำเนินการ หรือดูข้อมูล
ตัวอย่างการใช้งานจริง
โปรแกรมอ่านข่าว
แอปข่าวจำนวนมากพยายามลดแบนด์วิดท์ด้วยการดาวน์โหลดเฉพาะพาดหัวข่าวหลังจากเลือกหมวดหมู่แล้ว ดาวน์โหลดบทความฉบับเต็มเมื่อผู้ใช้ต้องการอ่าน และดาวน์โหลดภาพขนาดย่อเมื่อผู้ใช้เลื่อนดู
การใช้วิธีนี้จะบังคับให้วิทยุยังคงทำงานอยู่ตลอดเซสชันการอ่านข่าวของผู้ใช้ส่วนใหญ่ขณะที่ผู้ใช้เลื่อนดูพาดหัว เปลี่ยนหมวดหมู่ และอ่านบทความ นอกจากนี้ การสลับสถานะพลังงานอยู่ตลอดเวลา ยังส่งผลให้เกิดเวลาในการตอบสนองที่มากเมื่อสลับหมวดหมู่หรืออ่าน บทความ
แนวทางที่ดีกว่าคือการดึงข้อมูลล่วงหน้าในปริมาณที่เหมาะสมเมื่อเริ่มต้น โดยเริ่มจากชุดพาดหัวข่าวและภาพขนาดย่อชุดแรก ซึ่งจะช่วยให้เวลาเริ่มต้นมีเวลาในการตอบสนองต่ำ และดำเนินการต่อด้วยพาดหัวข่าวและภาพขนาดย่อที่เหลือ รวมถึงข้อความบทความสำหรับแต่ละบทความที่พร้อมใช้งานจากอย่างน้อย รายการพาดหัวข่าวหลัก
อีกทางเลือกหนึ่งคือการดึงข้อมูลล่วงหน้าของทุกบรรทัดแรก ภาพปก ข้อความบทความ และ อาจรวมถึงรูปภาพบทความทั้งหมดด้วย โดยปกติจะดำเนินการในเบื้องหลังตาม กำหนดเวลาที่กำหนดไว้ล่วงหน้า วิธีนี้มีความเสี่ยงที่จะใช้แบนด์วิดท์และแบตเตอรี่จำนวนมากในการดาวน์โหลดเนื้อหาที่ไม่เคยใช้ ดังนั้นจึงควรใช้วิธีนี้ด้วยความระมัดระวัง
ปัจจัยพิจารณาเพิ่มเติม
แม้ว่าการดึงข้อมูลล่วงหน้าจะมีประโยชน์มากมาย แต่หากใช้มากเกินไป การดึงข้อมูลล่วงหน้าก็อาจเพิ่มความเสี่ยงที่จะทำให้แบตเตอรี่หมดเร็วขึ้นและใช้แบนด์วิดท์ มากขึ้น รวมถึงโควต้าการดาวน์โหลดด้วย เนื่องจากจะดาวน์โหลดข้อมูลที่ไม่ได้ใช้ นอกจากนี้ คุณควรตรวจสอบว่าการดึงข้อมูลล่วงหน้าจะไม่ทำให้การเริ่มต้นแอปช้าลงในขณะที่แอปกำลังรอให้การดึงข้อมูลล่วงหน้าเสร็จสมบูรณ์ ในทางปฏิบัติ นั่นอาจหมายถึงการประมวลผลข้อมูลแบบค่อยเป็นค่อยไป หรือการเริ่มการโอนที่ต่อเนื่องซึ่งจัดลำดับความสำคัญ เพื่อให้ระบบดาวน์โหลดและประมวลผลข้อมูลที่จำเป็นสำหรับการเริ่มต้นแอปพลิเคชันก่อน
ความถี่ในการดึงข้อมูลล่วงหน้าจะขึ้นอยู่กับขนาดของข้อมูลที่ ดาวน์โหลดและความเป็นไปได้ที่จะมีการใช้ข้อมูลนั้น โดยคร่าวๆ ตาม เครื่องสถานะที่อธิบายไว้ก่อนหน้านี้ สำหรับข้อมูลที่มีโอกาส 50% ที่จะใช้ ภายในเซสชันผู้ใช้ปัจจุบัน คุณมักจะดึงข้อมูลล่วงหน้าได้ประมาณ 6 วินาที (ประมาณ 1-2 เมกะไบต์) ก่อนที่ต้นทุนที่อาจเกิดขึ้นจากการดาวน์โหลดข้อมูลที่ไม่ได้ใช้ จะเท่ากับส่วนต่างที่อาจเกิดขึ้นจากการไม่ดาวน์โหลดข้อมูลนั้นตั้งแต่แรก
โดยทั่วไปแล้ว แนวทางปฏิบัติที่ดีคือการดึงข้อมูลล่วงหน้าเพื่อให้คุณ ต้องเริ่มการดาวน์โหลดอีกครั้งทุกๆ 2-5 นาที และมีขนาดประมาณ 1-5 เมกะไบต์
ตามหลักการนี้ การดาวน์โหลดขนาดใหญ่ เช่น ไฟล์วิดีโอ ควรดาวน์โหลดเป็นกลุ่มในช่วงเวลาปกติ (ทุกๆ 2-5 นาที) ซึ่งจะเป็นการดึงข้อมูลล่วงหน้าเฉพาะข้อมูลวิดีโอที่มีแนวโน้มว่าจะรับชมในอีกไม่กี่นาทีข้างหน้า
วิธีหนึ่งคือการกำหนดเวลาการดาวน์โหลดแบบเต็มให้เกิดขึ้นเฉพาะเมื่อเชื่อมต่อกับ Wi-Fi และอาจเกิดขึ้นเฉพาะเมื่ออุปกรณ์กำลังชาร์จ WorkManager API รองรับกรณีการใช้งานนี้อย่างแน่นอน โดยช่วยให้คุณจำกัดงานที่ทำงานในเบื้องหลังได้ จนกว่าอุปกรณ์จะมีคุณสมบัติตรงตามเกณฑ์ที่นักพัฒนาแอปกำหนด เช่น การชาร์จและ การเชื่อมต่อกับ Wi-Fi
ตรวจสอบการเชื่อมต่อก่อนส่งคำขอ
การค้นหาสัญญาณโทรศัพท์มือถือเป็นหนึ่งในการดำเนินการที่ใช้พลังงานมากที่สุดในอุปกรณ์เคลื่อนที่ แนวทางปฏิบัติแนะนำสำหรับคำขอที่ผู้ใช้เริ่มต้นคือให้ตรวจสอบการเชื่อมต่อโดยใช้ ConnectivityManager
ก่อน ดังที่แสดงในตรวจสอบสถานะการเชื่อมต่อและการวัดการเชื่อมต่อ
หากไม่มีเครือข่าย แอปจะประหยัดแบตเตอรี่ได้โดยไม่ต้องบังคับให้วิทยุเคลื่อนที่
ค้นหา จากนั้นจะกำหนดเวลาคำขอและดำเนินการเป็นกลุ่มพร้อมกับคำขออื่นๆ ได้
เมื่อมีการเชื่อมต่อ
การเชื่อมต่อสระ
กลยุทธ์เพิ่มเติมที่ช่วยได้นอกเหนือจากการจัดกลุ่มและการดึงข้อมูลล่วงหน้าคือ การจัดกลุ่มการเชื่อมต่อเครือข่ายของแอป
โดยทั่วไปแล้ว การใช้การเชื่อมต่อเครือข่ายที่มีอยู่ซ้ำจะมีประสิทธิภาพมากกว่า การเริ่มการเชื่อมต่อใหม่ การใช้การเชื่อมต่อซ้ำยังช่วยให้เครือข่าย ตอบสนองต่อความแออัดและปัญหาข้อมูลเครือข่ายที่เกี่ยวข้องได้อย่างชาญฉลาดมากขึ้นด้วย
HttpURLConnection
และไคลเอ็นต์ HTTP ส่วนใหญ่ เช่น OkHttp จะเปิดใช้
การจัดกลุ่มการเชื่อมต่อโดยค่าเริ่มต้น และใช้การเชื่อมต่อเดียวกันซ้ำสำหรับคำขอหลายรายการ
สรุปและสิ่งที่จะเกิดขึ้นในอนาคต
ในส่วนนี้ คุณได้เรียนรู้มากมายเกี่ยวกับคลื่นวิทยุไร้สายและกลยุทธ์บางอย่าง ที่คุณสามารถนำไปใช้ในวงกว้างเพื่อมอบประสบการณ์การใช้งานที่รวดเร็วและตอบสนองได้ดี พร้อมทั้งลดการใช้แบตเตอรี่
ในส่วนถัดไป เราจะมาดูรายละเอียดการโต้ตอบกับเครือข่าย 3 ประเภทที่แตกต่างกัน ซึ่งพบได้ทั่วไปในแอปส่วนใหญ่ คุณจะได้เรียนรู้ปัจจัยที่ขับเคลื่อนการโต้ตอบแต่ละประเภท รวมถึงเทคนิคและ API ที่ทันสมัยสำหรับการจัดการการโต้ตอบเหล่านี้อย่างมีประสิทธิภาพ