การจราจรของข้อมูลในเครือข่ายที่สร้างโดยแอปอาจมีผลกระทบอย่างมากต่อ อายุการใช้งานแบตเตอรี่ของอุปกรณ์ หากต้องการเพิ่มประสิทธิภาพการเข้าชมดังกล่าว คุณต้องวัดและระบุแหล่งที่มาของการเข้าชม คำขอของเครือข่ายอาจมาจากการดำเนินการของผู้ใช้โดยตรง จากโค้ดของแอปของคุณเอง หรือจากเซิร์ฟเวอร์ที่สื่อสารกับแอปของคุณ
หัวข้อนี้แสดงวิธีตรวจสอบและจัดหมวดหมู่การจราจรของข้อมูลในเครือข่าย และ ให้คำแนะนำในการระบุและแก้ไขปัญหา
ใช้เครื่องมือวิเคราะห์เครือข่ายเพื่อตรวจสอบคำขอ
ใช้เครื่องมือสร้างโปรไฟล์เครือข่ายเพื่อติดตาม คำขอเครือข่ายของแอปพลิเคชัน คุณสามารถตรวจสอบวิธีและเวลาที่โอนแอปได้ ข้อมูล และเพิ่มประสิทธิภาพโค้ดที่สำคัญอย่างเหมาะสม
ด้วยการตรวจสอบความถี่ของการโอนข้อมูลและปริมาณข้อมูล ในระหว่างการเชื่อมต่อแต่ละครั้ง คุณสามารถระบุบริเวณต่างๆ ของแอปพลิเคชันของคุณได้ ที่ทำให้ประหยัดแบตเตอรี่มากยิ่งขึ้นได้ โดยทั่วไปคุณจะต้องการ การเพิ่มขึ้นอย่างรวดเร็ว ซึ่งอาจมีความล่าช้า
เพื่อให้สามารถระบุสาเหตุของการโอนที่พุ่งสูงขึ้นอย่างฉับพลัน Traffic Stats API จะเปิดใช้
คุณติดแท็กการโอนข้อมูลที่เกิดจากซ็อกเก็ตภายในชุดข้อความที่ระบุได้
โดยใช้
TrafficStats.setThreadStatsTag()
การเรียกฟังก์ชันนี้จะไม่ติดแท็กการเข้าชมทั้งหมดสําหรับ
ชุดข้อความ; ก็ต้องใช้แท็กกับซ็อกเก็ต
เมื่อตั้งค่าแท็กเทรดแล้ว คุณจะติดแท็กและยกเลิกการแท็กซ็อกเก็ตแต่ละรายการได้ด้วยตนเอง
โดยใช้
TrafficStats.tagSocket()
และ
TrafficStats.untagSocket()
ระบบจะใช้แท็กด้วยหากซ็อกเก็ตเปิดในเทรดหรือซ็อกเก็ตเซิร์ฟเวอร์
ยอมรับการเชื่อมต่อ
การเข้าถึงซ็อกเก็ตเดียวกันโดยเทรดหลายรายการพร้อมกันจะใช้แท็กใดก็ได้ ซ็อกเก็ตมีเมื่อมีการส่งหรือรับแพ็กเก็ตเครือข่าย (ซึ่งอาจ ต่างจากตอนที่ผู้ใช้เขียนหรืออ่านข้อมูล เนื่องจากการบัฟเฟอร์และ ส่งซ้ำ)
เช่น คุณสามารถกำหนดค่าคงที่เพื่อแสดงเครือข่ายประเภทต่างๆ การเข้าชม ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้
Kotlin
const val USER_INITIATED = 0x1000 const val APP_INITIATED = 0x2000 const val SERVER_INITIATED = 0x3000
Java
public static final int USER_INITIATED = 0x1000; public static final int APP_INITIATED = 0x2000; public static final int SERVER_INITIATED = 0x3000;
จากนั้น คุณสามารถติดแท็กคำขอของเครือข่ายตามนั้น ดังนี้
Kotlin
TrafficStats.setThreadStatsTag(USER_INITIATED) TrafficStats.tagSocket(outputSocket) // Transfer data using socket TrafficStats.untagSocket(outputSocket)
Java
TrafficStats.setThreadStatsTag(USER_INITIATED); TrafficStats.tagSocket(outputSocket); // Transfer data using socket TrafficStats.untagSocket(outputSocket);
HttpURLConnection
ไลบรารีจะติดแท็กซ็อกเก็ตโดยอัตโนมัติตาม
TrafficStats.getThreadStatsTag()
ไลบรารียังติดแท็กและยกเลิกการแท็กซ็อกเก็ตเมื่อรีไซเคิลผ่าน
พูล Keep-alive ดังที่แสดงในตัวอย่างโค้ดต่อไปนี้
Kotlin
class IdentifyTransferSpikeTask { @WorkerThread fun request(url: String) { TrafficStats.setThreadStatsTag(APP_INITIATED) // Make network request using HttpURLConnection.connect() ... TrafficStats.clearThreadStatsTag() } }
Java
public class IdentifyTransferSpikeTask { @WorkerThread public void request(String url) { TrafficStats.setThreadStatsTag(APP_INITIATED); // Make network request using HttpURLConnection.connect() ... TrafficStats.clearThreadStatsTag(); } }
วิเคราะห์ประเภทการจราจรของข้อมูลในเครือข่าย
เมื่อดูการจราจรของข้อมูลในเครือข่ายที่แอปสร้างขึ้น คุณจะต้องทำดังนี้ ทำความเข้าใจแหล่งที่มาของการเข้าชมเพื่อให้คุณสามารถเพิ่มประสิทธิภาพได้อย่างเหมาะสม กิจกรรมเครือข่ายที่เกิดขึ้นบ่อยซึ่งแอปของคุณสร้างขึ้นอาจเป็นสิ่งที่เหมาะสมอย่างสิ้นเชิง ตอบสนองต่อการดำเนินการของผู้ใช้หรือไม่ แต่ก็ไม่เหมาะสมโดยสิ้นเชิงถ้าแอปของคุณ ไม่ได้อยู่ด้านหน้า หรืออุปกรณ์อยู่ในกระเป๋าเสื้อหรือกระเป๋าสตางค์
วิเคราะห์การเข้าชมที่เริ่มต้นโดยผู้ใช้
การจราจรของข้อมูลในเครือข่ายที่ผู้ใช้เป็นผู้เริ่มต้นอาจได้รับการจัดกลุ่มเข้าด้วยกันอย่างมีประสิทธิภาพในขณะที่ผู้ใช้ ดำเนินการอย่างใดอย่างหนึ่งภายในแอปของคุณ หรือกระจายออกไปอย่างไม่ทั่วถึง ผู้ใช้ขอข้อมูลเพิ่มเติมที่แอปของคุณต้องได้รับ เป้าหมายของคุณในอีก การวิเคราะห์การจราจรของข้อมูลในเครือข่ายที่เริ่มต้นโดยผู้ใช้คือการค้นหารูปแบบของ การใช้เครือข่ายในช่วงเวลาหนึ่ง และพยายามลดความถี่โดยการจัดกลุ่ม คำขอไว้ด้วยกัน
ความคาดเดาไม่ได้ของคำขอของผู้ใช้ทำให้เพิ่มประสิทธิภาพสิ่งนี้ได้ยาก ประเภทการใช้เครือข่ายในแอปของคุณ นอกจากนี้ ผู้ใช้คาดหวังว่าจะได้รับคำตอบที่รวดเร็ว พวกเขาก็กำลังใช้แอปอยู่ ดังนั้น การยืดเวลาคำขอประสิทธิภาพออกไปจะนำไปสู่ ผู้ใช้ได้รับประสบการณ์ที่ไม่ดี โดยทั่วไป คุณควรให้ความสำคัญกับการตอบกลับที่รวดเร็วสำหรับ ผู้ใช้ใช้งานเครือข่ายอย่างมีประสิทธิภาพขณะที่ผู้ใช้โต้ตอบโดยตรง กับแอปของคุณ
โปรดดูคําแนะนําในการเพิ่มประสิทธิภาพการเข้าชมที่เกิดจากผู้ใช้ที่หัวข้อเพิ่มประสิทธิภาพ เริ่มโดยผู้ใช้ คำขอ
วิเคราะห์การเข้าชมที่เริ่มมาจากแอป
การจราจรของข้อมูลในเครือข่ายที่เริ่มต้นมาจากแอปมักเป็นพื้นที่ที่คุณสามารถ มีผลกระทบอย่างมากต่อการใช้แบนด์วิดท์ของเครือข่ายอย่างมีประสิทธิภาพ ในการวิเคราะห์ กิจกรรมเครือข่ายของแอป ให้มองหาช่วงเวลาที่ไม่มีการใช้งานและพิจารณาว่า สามารถเพิ่มได้ ถ้าคุณเห็นรูปแบบการเข้าถึงเครือข่ายที่สอดคล้องกันจาก แอปของคุณ ลองจัดกลุ่มการเข้าชมนี้เพื่อให้วิทยุของอุปกรณ์เปลี่ยนกลับ ให้เข้าสู่โหมดใช้พลังงานต่ำระหว่างระยะเวลาที่ทำกิจกรรม
โปรดดูคำแนะนำในการเพิ่มประสิทธิภาพการเข้าชมที่มาจากแอปได้ที่เพิ่มประสิทธิภาพ แอปเริ่มต้น คำขอ
วิเคราะห์การรับส่งข้อมูลที่เริ่มต้นโดยเซิร์ฟเวอร์
โดยทั่วไปแล้ว กิจกรรมเครือข่ายที่เซิร์ฟเวอร์เริ่มต้นขึ้นเพื่อสื่อสารกับแอปของคุณยังถือเป็นส่วนที่คุณสามารถสร้างผลกระทบอย่างมากต่อการใช้แบนด์วิดท์เครือข่ายอย่างมีประสิทธิภาพ การรับส่งข้อความในระบบคลาวด์ของ Firebase (FCM) เป็นโซลูชันที่ใช้งานง่าย ที่ใช้ส่งข้อมูลจากเซิร์ฟเวอร์ไปยังอินสแตนซ์ของแอปหนึ่งๆ เมื่อใช้ FCM เซิร์ฟเวอร์ของคุณสามารถแจ้งเตือนแอปของคุณที่ทำงานอยู่บนอุปกรณ์หนึ่งๆ ที่ มีข้อมูลใหม่พร้อมใช้งาน
โปรดดูคำแนะนำในการเพิ่มประสิทธิภาพการเข้าชมที่มาจากเซิร์ฟเวอร์ได้ที่เพิ่มประสิทธิภาพ เริ่มต้นโดยเซิร์ฟเวอร์ คำขอ
ใช้ Battery Historian เพื่อแสดงผลภาพผลกระทบของการรับส่งข้อมูลในเครือข่าย
นักประวัติศาสตร์แบตเตอรี่ เป็นเครื่องมือที่แสดงภาพการใช้แบตเตอรี่ของอุปกรณ์ในช่วงเวลาหนึ่ง คุณสามารถใช้เครื่องมือนี้เพื่อวิเคราะห์ผลกระทบที่กิจกรรมในเครือข่ายมีต่อแบตเตอรี่ การบริโภค ตัวอย่างเช่น Container Historian สามารถแสดงให้คุณทราบว่าแอปของคุณ ที่ใช้สัญญาณมือถือบ่อยกว่าที่คุณคาดไว้ หากต้องการดูข้อมูลเพิ่มเติม เกี่ยวกับการใช้แบตเตอรี่ที่ผ่านมา โปรดดูโปรไฟล์การใช้งานแบตเตอรี่ด้วยแบตเตอรี่สถิติ และ Charge Historian