การใช้แบตเตอรี่ในการพัฒนาแอปมือถือ: สาเหตุและวิธีการจัดการ

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-28 เวลาอ่าน: 10 นาที

การใช้แบตเตอรี่ที่เพิ่มขึ้น — หนึ่งในข้อร้องเรียนที่พบบ่อยที่สุดจากผู้ใช้แอปพลิเคชันมือถือ แอปเริ่มใช้พลังงานมากผิดปกติ ทำให้อุปกรณ์คายประจุอย่างรวดเร็วแม้อยู่ในพื้นหลัง ตามข้อมูลของ Google I/O 2023 พบว่าสูงถึง 30% ของแอปใน Google Play มีปัญหาเรื่องการใช้พลังงานซึ่งส่งผลโดยตรงต่อการรักษาผู้ใช้ ในบทความนี้เราจะมาวิเคราะห์สาเหตุ การวินิจฉัย และวิธีการปรับให้เหมาะสม

ประเด็นสำคัญ

  • WakeLock — สาเหตุหลักของการรั่วไหลของพลังงานหากไม่ได้ปล่อยตามเวลา
  • คำขอเครือข่ายที่ไม่มีการรวมกลุ่มทำให้โมดูลวิทยุทำงานตลอดเวลา
  • ตำแหน่งที่มีความแม่นยำสูงใช้พลังงานมากกว่าตำแหน่งประมาณถึง 10 เท่า
  • WorkManager — API มาตรฐานสำหรับงานพื้นหลังที่คำนึงถึงสถานะแบตเตอรี่
  • การทำโปรไฟล์ผ่าน Battery Historian และ Energy Profiler จำเป็นก่อนเผยแพร่

การใช้แบตเตอรี่ในแอปมือถือคืออะไร?

การใช้แบตเตอรี่ที่เพิ่มขึ้น เป็นภาวะที่แอปพลิเคชันมือถือใช้พลังงานมากกว่าที่คาดไว้ในสถานการณ์การใช้งานทั่วไปอย่างมีนัยสำคัญ ผู้ใช้สังเกตเห็นว่าอุปกรณ์คายประจุเร็วขึ้น 20-30% หลังจากติดตั้งหรืออัปเดตแอป

ระบบปฏิบัติการมือถือสมัยใหม่ — Android และ iOS — มีกลไกควบคุมการใช้พลังงานในตัว Android ใช้ Battery Optimization และ iOS ใช้ Background Modes อย่างไรก็ตาม การใช้ API อย่างไม่ถูกต้องอาจเลี่ยงกลไกเหล่านี้ได้

ตามการวิจัยของ Purdue University (2021) พบว่าประมาณ 60% ของแอปใช้พลังงานสำหรับงานพื้นหลังโดยไม่จำเป็น ซึ่งพบได้บ่อยโดยเฉพาะในแอปที่มีโฆษณา การวิเคราะห์ และการเชื่อมต่อเครือข่ายถาวร

วัดการใช้แบตเตอรี่อย่างไร?

การใช้พลังงานวัดเป็น mA·h (มิลลิแอมแปร์-ชั่วโมง) Android ให้ข้อมูลผ่าน BatteryManager API ซึ่งติดตามการใช้พลังงานของแต่ละส่วนประกอบ: CPU, โมดูลวิทยุ, GPS, จอแสดงผล และเซ็นเซอร์

kotlin
val batteryManager = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
val chargeCounter = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
val capacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
// chargeCounter / capacity * 100 = current charge percentage

BatteryManager API ช่วยให้คุณได้รับประจุปัจจุบันและความจุแบตเตอรี่ แต่ไม่ได้ให้รายละเอียดต่อแอป — จำเป็นต้องใช้ยูทิลิตี้ระบบสำหรับสิ่งนั้น

สาเหตุหลักของการใช้พลังงานที่เพิ่มขึ้น

WakeLock — กลไกที่อันตรายที่สุดสำหรับแบตเตอรี่ หากแอปถือ WakeLock โดยไม่ปล่อย อุปกรณ์จะไม่เข้าสู่โหมดสลีป การถือ WakeLock หนึ่งชั่วโมงใช้พลังงานประมาณ 50-80 mA·h

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

การระบุ ตำแหน่ง GPS ที่มีความแม่นยำสูง (GPS_PROVIDER) ใช้พลังงานมากกว่าการระบุตำแหน่งประมาณ (NETWORK_PROVIDER) 10-15 เท่า การอัปเดตตำแหน่งอย่างต่อเนื่องในพื้นหลังเป็นหนึ่งในข้อร้องเรียนที่พบบ่อยที่สุดของผู้ใช้

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

ตาม Android Developers Blog แอปโดยเฉลี่ยใช้ประมาณ 15% ของการใช้แบตเตอรี่ทั้งหมดของอุปกรณ์ การเกินระดับนี้จำเป็นต้องตรวจสอบการใช้พลังงานอย่างละเอียด

วิธีวินิจฉัยปัญหาแบตเตอรี่?

Battery Historian — เครื่องมืออย่างเป็นทางการของ Google สำหรับวิเคราะห์การใช้พลังงาน โดยรับดัมพ์ BatteryStats จาก ADB และแสดงภาพการใช้พลังงานตามส่วนประกอบ: CPU, เครือข่าย, GPS, WakeLock และจอแสดงผล

ในการสร้างดัมพ์ ให้รันคำสั่ง: adb shell dumpsys batterystats หลังจากรวบรวมข้อมูล 2-3 ชั่วโมงจากการใช้งานปกติ คุณสามารถอัปโหลดรายงานไปยัง Battery Historian เพื่อวิเคราะห์

Android Energy Profiler ใน Android Studio ติดตามการใช้พลังงานแบบเรียลไทม์ โดยแสดงการใช้ CPU, เครือข่าย, GPS และจอแสดงผลสำหรับแต่ละการทำงานของแอป

bash
# Reset battery stats before test
adb shell dumpsys batterystats --reset

# Use the app for 2-3 hours

# Export dump for Battery Historian
adb shell dumpsys batterystats > batterystats_dump.txt

การวิเคราะห์ใน iOS

สำหรับ iOS ใช้ Energy Log ผ่าน Xcode Instruments โดยรวบรวมข้อมูลการใช้พลังงานแยกตามโมดูล: CPU, เครือข่าย, GPU, จอแสดงผล, ตำแหน่ง เวลาอ่าน: 15-30 นาทีต่อการวิเคราะห์หนึ่งเซสชัน

บนอุปกรณ์ iOS จริง สถิติการใช้พลังงานยังแสดงใน Settings > Battery หากแอปอยู่ใน 10 อันดับแรกด้านการใช้พลังงาน — นั่นคือสัญญาณให้ปรับปรุง

วิธีการปรับปรุงการใช้พลังงาน

WorkManager — API มาตรฐานสำหรับงานพื้นหลังที่คำนึงถึงสถานะแบตเตอรี่ เครือข่าย และโหมด Doze โดยรับประกันการทำงานภายใต้สภาวะที่เหมาะสมแทนที่จะทำงานทันที ช่วยประหยัดพลังงานได้ถึง 40% สำหรับการดำเนินการพื้นหลัง

kotlin
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
    .setConstraints(
        Constraints.Builder()
            .setRequiresCharging(true)
            .setRequiresBatteryNotLow(true)
            .setRequiresNetworkType(NetworkType.CONNECTED)
            .build()
    )
    .build()
WorkManager.getInstance(this).enqueue(workRequest)

การรวมกลุ่มคำขอเครือข่าย

การรวมกลุ่มคำขอ — การรวมการดำเนินการเครือข่ายหลายรายการเป็นเซสชันการสื่อสารเดียว แทนที่จะส่ง 10 คำขอแยกกัน แอปส่งคำขอแบบกลุ่มเดียว ซึ่งลดเวลาแอคทีฟของโมดูลวิทยุจาก 30 วินาทีเหลือ 2-3 วินาที

  • Retrofit กับ OkHttp รองรับการรวมกลุ่มผ่าน Interceptor
  • Firebase Cloud Messaging ช่วยให้รวมการแจ้งเตือนเป็นเซสชันเดียว
  • GraphQL — ทางเลือกแทน REST ที่หนึ่งคำสั่งแทนที่หลายคำสั่ง

การปรับปรุงการทำงานกับตำแหน่ง

FusedLocationProviderClient จาก Google Play Services เลือกแหล่งตำแหน่งที่เหมาะสมตามความแม่นยำที่ต้องการ สำหรับงานพื้นหลัง ใช้ลำดับความสำคัญ PRIORITY_BALANCED_POWER_ACCURACY — ให้ความแม่นยำสูงถึง 100 เมตรโดยใช้แบตเตอรี่น้อยที่สุด

ใน iOS ใช้ Significant Location Change แทน Continuous Location ซึ่งจะอัปเดตเฉพาะเมื่อมีการเคลื่อนไหวที่สำคัญ (มากกว่า 500 เมตร) แทนที่จะทุกสองสามวินาที

เครื่องมือวิเคราะห์การใช้พลังงาน

Android Battery Historian — เครื่องมือเว็บของ Google สำหรับแสดงภาพข้อมูล BatteryStats รองรับการนำเข้าดัมพ์ ส่วนประกอบที่ใช้สีรหัส และการเปรียบเทียบเซสชัน ตัวชี้วัดหลัก: เวลาถือ WakeLock, กิจกรรมโมดูลวิทยุ, เซสชัน GPS

Xcode Energy Organizer รวบรวมข้อมูลการใช้พลังงานจากผู้ใช้จริงผ่าน TestFlight และ App Store คุณจะได้รับรายงานเกี่ยวกับการใช้พลังงานเฉลี่ยบนอุปกรณ์และเวอร์ชัน iOS ต่าง ๆ ซึ่งช่วยติดตามการเสื่อมประสิทธิภาพหลังอัปเดต

PerfDog (Tencent) — เครื่องมือทดสอบประสิทธิภาพข้ามแพลตฟอร์มที่รวมการวัดการใช้พลังงาน รองรับ iOS และ Android ให้บันทึกตัวชี้วัดที่ 1-10 เฟรมต่อวินาที

เครื่องมือแพลตฟอร์มตัวชี้วัด
Battery HistorianAndroidWakeLock, เครือข่าย, GPS, CPU, จอแสดงผล
Energy ProfilerAndroid StudioCPU, เครือข่าย, GPS, วิทยุแบบเรียลไทม์
Energy LogiOS (Xcode)CPU, เครือข่าย, GPU, จอแสดงผล, ตำแหน่ง
PerfDogiOS + Androidพลังงาน, FPS, CPU, หน่วยความจำ (ทั้งหมดพร้อมกัน)

ตาม Apple WWDC 2023 การใช้ Energy Organizer ช่วยลดการใช้พลังงานเฉลี่ยของแอปได้ 15-25% โดยการระบุและแก้ไขการเสื่อมประสิทธิภาพก่อนออกอัปเดตใน App Store

คำถามที่พบบ่อย

แอปใดใช้แบตเตอรี่มากที่สุด?

โซเชียลเน็ตเวิร์ก และแอปส่งข้อความ (Facebook, Instagram, WhatsApp, Telegram) เป็นผู้นำด้านการใช้พลังงาน โดยซิงค์ข้อมูล อัปเดตฟีด รับการแจ้งเตือนแบบพุช และใช้ GPS อย่างต่อเนื่อง อันดับสองคือเกมกราฟิก 3D ที่โหลดทั้ง GPU และ CPU พร้อมกัน ใช้พลังงานสูงถึง 400-600 mA·h ต่อชั่วโมงการเล่น

อัตรารีเฟรชหน้าจอส่งผลต่อการใช้แบตเตอรี่หรือไม่?

ใช่ ส่งผลโดยตรง หน้าจอ เป็นส่วนประกอบที่ใช้พลังงานมากที่สุดของสมาร์ทโฟน การเพิ่มความถี่จาก 60 Hz เป็น 120 Hz ทำให้การใช้พลังงานของจอแสดงผลเพิ่มขึ้น 30-50% อย่างไรก็ตาม จอแสดงผลสมัยใหม่ที่มีเทคโนโลยี LTPO จะเปลี่ยนความถี่แบบไดนามิกจาก 1 ถึง 120 Hz ตามเนื้อหา ซึ่งลดผลกระทบต่อแบตเตอรี่

GPS ส่งผลต่อการใช้พลังงานอย่างไร?

GPS ความแม่นยำสูง ใช้ประมาณ 200-300 mA·h ต่อชั่วโมงการทำงานต่อเนื่อง สำหรับการเปรียบเทียบ การระบุตำแหน่งผ่าน Wi-Fi และเสาสัญญาณโทรศัพท์มือถือ (NETWORK_PROVIDER) ใช้เพียง 20-40 mA·h ในช่วงเวลาเดียวกัน ใช้ Geofencing API เพื่อเปิด GPS เฉพาะเมื่อเข้าสู่พื้นที่ที่กำหนด

ควรปิดแอปพื้นหลังด้วยตนเองหรือไม่?

ไม่ควร ระบบปฏิบัติการสมัยใหม่ (Android และ iOS) ปรับกระบวนการพื้นหลังให้เหมาะสมเอง การบังคับปิดแอปและเริ่มใหม่ใช้พลังงานมากกว่าการปล่อยให้แอปอยู่ในพื้นหลัง ข้อยกเว้นคือแอปที่ก่อให้เกิดปัญหาชัดเจน (ระบุผ่านสถิติแบตเตอรี่ในการตั้งค่า)

จะรู้ได้อย่างไรว่าแอปใดกำลังใช้แบตเตอรี่บน Android?

เปิด Settings > Battery > Battery Usage ระบบจะแสดงรายการแอปพร้อมเปอร์เซ็นต์การใช้ สำหรับการวิเคราะห์โดยละเอียด ให้ใช้ ADB: adb shell dumpsys batterystats และอัปโหลดดัมพ์ไปยัง Battery Historian ซึ่งจะแสดงไม่เพียงแต่การใช้ทั้งหมด แต่ยังแยกตามส่วนประกอบ (WakeLock, เครือข่าย, GPS) ด้วย

สรุป

  • การใช้แบตเตอรี่ที่เพิ่มขึ้น — การใช้พลังงานผิดปกติของแอป ทำให้อุปกรณ์คายประจุเร็วและประสบการณ์ผู้ใช้แย่ลง
  • สาเหตุหลัก: WakeLock, คำขอเครือข่ายบ่อย, GPS ความแม่นยำสูง, แอนิเมชันที่ไม่ได้ปรับให้เหมาะสม และบริการพื้นหลัง
  • WakeLock — กลไกที่อันตรายที่สุด ควรปล่อยในบล็อก try/finally เสมอ หรือใช้ WakeLock.acquire กับหมดเวลา
  • WorkManager — API มาตรฐานสำหรับงานพื้นหลังที่คำนึงถึงสถานะแบตเตอรี่และเครือข่าย แนะนำโดย Google
  • การรวมกลุ่มคำขอ ลดการใช้พลังงานของโมดูลวิทยุลง 30-50% โดยลดจำนวนการเปลี่ยนโหมด
  • การวินิจฉัยผ่าน Battery Historian, Energy Profiler และ Xcode Energy Organizer จำเป็นก่อนทุกการเผยแพร่
  • วัดโปรไฟล์การใช้พลังงานบนอุปกรณ์จริง — อีมูเลเตอร์ไม่ให้ค่าแบตเตอรี่ที่แม่นยำ

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม