Thiết bị mobile giới hạn RAM và pin; app tiêu tốn dễ bị hệ thống kill hoặc bị người dùng gỡ.
Bộ nhớ:
- Rò rỉ (leak) là nguyên nhân chính: giữ tham chiếu tới Activity/Context/View trong object sống lâu, listener/coroutine không hủy → object không được GC. Dùng LeakCanary/Profiler để phát hiện.
- Giải phóng tài nguyên nặng (bitmap, file, camera) đúng lúc; ảnh nên downscale/cache.
- List lớn phải ảo hóa (RecyclerView/LazyColumn/FlatList), không nạp tất cả vào RAM.
Pin:
- Tốn pin nhất: mạng, GPS, wake lock, việc nền chạy liên tục.
- Gom request theo lô, dùng WorkManager với ràng buộc (chỉ chạy khi sạc/Wi-Fi), tránh polling dày; nghe lifecycle để dừng cảm biến/timer khi vào nền.
- Đẩy thông báo qua push thay vì tự poll server.
Hay hỏi: cách phát hiện memory leak và vì sao background work không kiểm soát làm hao pin.