เพิ่มประสิทธิภาพการเข้าถึงเครือข่าย

การใช้คลื่นวิทยุไร้สายเพื่อโอนข้อมูลอาจเป็นสาเหตุสำคัญที่สุดที่ทำให้แบตเตอรี่ของแอปหมด คุณต้องทำความเข้าใจว่ารูปแบบการเชื่อมต่อจะส่งผลต่อฮาร์ดแวร์วิทยุพื้นฐานอย่างไร เพื่อลดการใช้แบตเตอรี่ที่เกี่ยวข้องกับกิจกรรมเครือข่าย

ส่วนนี้จะแนะนำเครื่องสถานะวิทยุไร้สายและอธิบายวิธีที่โมเดลการเชื่อมต่อของแอปโต้ตอบกับเครื่องสถานะวิทยุไร้สาย จากนั้นจะแนะนำเทคนิคต่างๆ ซึ่งเมื่อทำตามแล้วจะช่วยลดผลกระทบที่การใช้ข้อมูลของแอป มีต่อแบตเตอรี่

เครื่องสถานะวิทยุ

วิทยุไร้สายในอุปกรณ์ของผู้ใช้มีฟีเจอร์ประหยัดพลังงานในตัวที่ ช่วยลดปริมาณพลังงานแบตเตอรี่ที่ใช้ เมื่อเปิดใช้งานอย่างเต็มรูปแบบ วิทยุไร้สายจะใช้พลังงานมาก แต่เมื่อไม่ได้ใช้งานหรืออยู่ในโหมดสแตนด์บาย วิทยุจะใช้พลังงานน้อยมาก

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

เครื่องสถานะสำหรับวิทยุเครือข่าย 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 วินาทีในทุกๆ นาที จึงช่วยลดการใช้แบตเตอรี่ได้อย่างมาก


รูปที่ 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 ที่ทันสมัยสำหรับการจัดการการโต้ตอบเหล่านี้อย่างมีประสิทธิภาพ