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

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

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

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

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

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

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