แก้ปัญหาเครือข่าย

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

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

ใช้เครื่องมือวิเคราะห์เครือข่ายเพื่อตรวจสอบคำขอ

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



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

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

เพื่อให้สามารถระบุสาเหตุของการโอนที่พุ่งสูงขึ้นอย่างฉับพลัน 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