ภาพรวมสถิติอินเทอร์เฟซเครือข่าย

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

โปรแกรมควบคุมอุปกรณ์เครือข่ายแต่ละรายการ (รวมถึง Wi-Fi) ต้องเป็นไปตามวงจรของอุปกรณ์เคอร์เนลมาตรฐาน และแสดงสถิติที่ถูกต้องผ่าน dev_get_stats() โดยเฉพาะอย่างยิ่ง สถิติที่แสดงผลต้องเพิ่มขึ้นอย่างสม่ำเสมอขณะที่อินเทอร์เฟซทำงานอยู่ โปรแกรมควบคุมจะรีเซ็ตสถิติได้ก็ต่อเมื่อ unregister_netdev() หรือรายการที่เทียบเท่าซึ่งสร้างเหตุการณ์ NETDEV_UNREGISTER สําหรับการเรียกกลับที่ลงทะเบียนด้วย register_netdevice_notifier() / register_inetaddr_notifier() / register_inet6addr_notifier() เสร็จสมบูรณ์แล้วเท่านั้น

โดยปกติแล้วผู้ให้บริการเครือข่ายมือถือจะวัดปริมาณการใช้อินเทอร์เน็ตที่ชั้นอินเทอร์เน็ต (IP) เพื่อให้สอดคล้องกับแนวทางนี้ใน Android 4.0 เราอาศัยข้อเท็จจริงที่ว่า สำหรับอุปกรณ์เคอร์เนลที่เราสนใจ rx_bytes และ tx_bytes ค่าที่ dev_get_stats() แสดงผลจะแสดงข้อมูลที่โอนในเลเยอร์อินเทอร์เน็ต (IP) ไบต์อย่างตรงที่สุด  แต่เราเข้าใจว่าอุปกรณ์อื่นๆ อาจไม่เป็นไปตามนี้ ขณะนี้ฟีเจอร์นี้ใช้ลักษณะเฉพาะนี้ ไดรเวอร์ใหม่ควรมีพร็อพเพอร์ตี้ดังกล่าวด้วย และค่า dev_get_stats() ต้องไม่มีค่าใช้จ่ายเพิ่มเติมในการเข้ารหัสของเลเยอร์เครือข่ายที่ต่ำกว่า (เช่น ส่วนหัวอีเทอร์เน็ต) และไม่ควรรวมการรับส่งข้อมูลอื่นๆ (เช่น ARP) เว้นแต่จะมีค่าเล็กน้อย

เฟรมเวิร์ก Android จะรวบรวมสถิติจากอินเทอร์เฟซเครือข่ายที่เชื่อมโยงกับ NetworkStateTracker ใน ConnectivityService เท่านั้น ซึ่งช่วยให้เฟรมเวิร์กระบุอินเทอร์เฟซเครือข่ายแต่ละรายการได้อย่างแน่ชัด รวมถึงประเภท (เช่น TYPE_MOBILE หรือ TYPE_WIFI) และข้อมูลประจำตัวของผู้สมัครใช้บริการ (เช่น IMSI)  อินเทอร์เฟซเครือข่ายทั้งหมดที่ใช้เพื่อกำหนดเส้นทางข้อมูลควรแสดงด้วย NetworkStateTracker เพื่อให้สามารถพิจารณาสถิติได้อย่างถูกต้อง