การใช้วิทยุไร้สายเพื่อโอนข้อมูลอาจเป็นสาเหตุสำคัญประการหนึ่งที่ทําให้แบตเตอรี่หมดเร็ว คุณจำเป็นต้องทำความเข้าใจว่ารูปแบบการเชื่อมต่อจะส่งผลต่อฮาร์ดแวร์วิทยุพื้นฐานอย่างไร เพื่อลดการสิ้นเปลืองแบตเตอรี่ที่เชื่อมโยงกับกิจกรรมเครือข่าย
ส่วนนี้จะแนะนำสถานะการทำงานของวิทยุไร้สายและอธิบายวิธีที่รูปแบบการเชื่อมต่อของแอปโต้ตอบกับสถานะดังกล่าว จากนั้นจะแสดงเทคนิคหลายอย่างซึ่งเมื่อทำตามแล้วจะช่วยลดความถี่ที่แบตเตอรี่ต้องจ่ายพลังงานให้กับแอป
สถานะการทำงานของวิทยุ
วิทยุไร้สายในอุปกรณ์ของผู้ใช้มีฟีเจอร์ประหยัดพลังงานในตัวซึ่งช่วยประหยัดแบตเตอรี่ เมื่อทำงานอย่างเต็มรูปแบบ วิทยุไร้สายจะใช้พลังงานอย่างมาก แต่เมื่อไม่ได้ใช้งานหรืออยู่ในโหมดสแตนด์บาย วิทยุจะใช้พลังงานเพียงเล็กน้อย
สิ่งสำคัญอย่างหนึ่งที่ควรจำไว้คือ วิทยุไม่สามารถเปลี่ยนจากโหมดสแตนด์บายเป็นโหมดทำงานอย่างเต็มรูปแบบได้ทันที ระยะเวลาในการตอบสนองจะเชื่อมโยงกับ "การเปิดเครื่อง" วิทยุ ดังนั้นแบตเตอรี่จึงเปลี่ยนจากสถานะพลังงานสูงเป็นสถานะพลังงานต่ำอย่างช้าๆ เพื่อประหยัดพลังงานเมื่อไม่ได้ใช้งาน ในขณะเดียวกันก็พยายามลดเวลาในการตอบสนองที่เชื่อมโยงกับการ "เปิดเครื่อง" วิทยุ
สถานะการทำงานของเครื่องรับวิทยุเครือข่าย 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 วินาทีครั้งเดียวทุกนาที วิทยุจะอยู่ในสถานะกำลังสูงเพียง 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 สมัยใหม่ในการจัดการการโต้ตอบเหล่านี้อย่างมีประสิทธิภาพ