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