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

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

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

สถานะการทำงานของวิทยุ

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

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

สถานะการทำงานของเครื่องรับวิทยุเครือข่าย 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 นาที) เพื่อเตรียมความพร้อมล่วงหน้าอย่างมีประสิทธิภาพสำหรับเฉพาะข้อมูลวิดีโอที่มีแนวโน้มว่าผู้ใช้จะดูในอีก 2-3 นาทีข้างหน้า

วิธีแก้ปัญหาอย่างหนึ่งคือกำหนดเวลาให้ดาวน์โหลดแบบเต็มเฉพาะเมื่อเชื่อมต่อกับ Wi-Fi และอาจเฉพาะเมื่ออุปกรณ์กำลังชาร์จเท่านั้น WorkManager API รองรับกรณีการใช้งานนี้โดยเฉพาะ ซึ่งช่วยให้คุณจำกัดการทำงานในเบื้องหลังได้จนกว่าอุปกรณ์จะเป็นไปตามเกณฑ์ที่นักพัฒนาแอประบุ เช่น กำลังชาร์จและเชื่อมต่อ Wi-Fi

ตรวจสอบการเชื่อมต่อก่อนส่งคำขอ

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

การเชื่อมต่อกับพูล

กลยุทธ์เพิ่มเติมที่จะช่วยได้นอกเหนือจากการแบ่งกลุ่มและการอ่านล่วงหน้าคือการรวมการเชื่อมต่อเครือข่ายของแอป

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

HttpURLConnection และไคลเอ็นต์ HTTP ส่วนใหญ่ เช่น OkHttp จะเปิดใช้การเชื่อมต่อแบบพูลโดยค่าเริ่มต้น และนําการเชื่อมต่อเดิมมาใช้ซ้ำสําหรับคําขอหลายรายการ

สรุปและมองไปข้างหน้า

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

ในส่วนถัดไป เราจะดูรายละเอียดของการโต้ตอบกับเครือข่าย 3 ประเภทที่แตกต่างกันซึ่งพบได้ทั่วไปในแอปส่วนใหญ่ คุณจะได้เรียนรู้ปัจจัยที่ขับเคลื่อนแต่ละประเภท รวมถึงเทคนิคและ API สมัยใหม่ในการจัดการการโต้ตอบเหล่านี้อย่างมีประสิทธิภาพ