+4

Chế độ Doze và App Standby trong lập trình Android quan trọng như thế nào?

Mở đầu

Chế độ Doze và App Standby là hai tính năng quan trọng được giới thiệu trong Android 6.0 Marshmallow để cải thiện tuổi thọ pin của thiết bị. Chúng giúp hạn chế hoạt động của các ứng dụng khi thiết bị không được sử dụng, qua đó tiết kiệm pin.

image.png

Khái niệm và demo

Chế độ Doze là một tính năng hệ thống giúp giảm mức tiêu thụ điện năng khi thiết bị di động của bạn đang ở trạng thái nghỉ quá lâu mà không hoạt động. Khi kích hoạt, chế độ Doze sẽ làm giảm các hoạt động mạng và hoạt động của CPU cho các ứng dụng đang chạy. Tuy nhiên, nó vẫn cho phép các ứng dụng hoạt động trong những khoảng thời gian ngắn gọi là "giai đoạn duy trì".

App Standby, mặt khác, là một tính năng ứng dụng cụ thể. Nó giới hạn hoạt động của một ứng dụng khi ứng dụng đó không được sử dụng trong một thời gian dài. Khi một ứng dụng ở chế độ App Standby, nó sẽ không nhận được các bất cứ dữ liệu mạng và không thực hiện các công việc nền. Tuy nhiên, ứng dụng vẫn có thể hiển thị thông báo và đăng ký nhận các sự kiện như cuộc gọi thoại.

Cả hai tính năng này đều nhằm mục đích tối ưu hóa tuổi thọ pin của thiết bị Android. Tuy nhiên, chúng hoạt động với các cơ chế khác nhau và ảnh hưởng đến các ứng dụng theo cách riêng.

Dưới đây là một ví dụ demo bằng Android Kotlin để thực hiện một số tác vụ liên quan đến Chế độ Doze và App Standby:

import android.content.Context
import android.os.Build
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Kiểm tra xem thiết bị có hỗ trợ Chế độ Doze không
        val isDozeSupported = Build.VERSION.SDK_INT >= Build.VERSION_CODES.N

        // Kiểm tra xem ứng dụng có ở chế độ App Standby không
        val isAppStandby = isAppStandby(this)

        // Hiển thị thông tin trạng thái
        statusTextView.text = "Doze Supported: $isDozeSupported\nApp Standby: $isAppStandby"
    }

    private fun isAppStandby(context: Context): Boolean {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            val powerManager = context.getSystemService(Context.POWER_SERVICE) as android.os.PowerManager
            return powerManager.isDeviceIdleMode
        }
        return false
    }
}

Trong ví dụ trên, chúng ta sử dụng các phương thức và thuộc tính của Android SDK để kiểm tra xem thiết bị có hỗ trợ Chế độ Doze hay không và xem ứng dụng có ở chế độ App Standby hay không. Sau đó, chúng ta hiển thị thông tin đó trên màn hình.

Phân tích

Cả Chế độ Doze và App Standby đều là những tính năng quan trọng để quản lý và tối ưu hóa tuổi thọ pin trên thiết bị Android. Tuy nhiên, chúng hoạt động với các cơ chế khác nhau và ảnh hưởng đến các ứng dụng theo những cách riêng biệt.

Chế độ Doze là một tính năng hệ thống được giới thiệu trong Android 6.0 Marshmallow. Nó được kích hoạt khi thiết bị của bạn ở trạng thái nghỉ, không di chuyển và không được cắm sạc trong một khoảng thời gian nhất định. Khi Chế độ Doze được bật, hệ thống sẽ hạn chế hoạt động của các ứng dụng bằng cách ngăn chặn chúng truy cập mạng và thực hiện các công việc nền. Tuy nhiên, Doze vẫn cho phép các ứng dụng hoạt động trong những khoảng thời gian ngắn gọi là "giai đoạn duy trì" (maintenance windows).

Trong giai đoạn duy trì, các ứng dụng có thể thực hiện các tác vụ như đồng bộ hóa dữ liệu, tải xuống nội dung và xử lý công việc nền. Ngoài ra, các ứng dụng vẫn có thể nhận được thông báo và đăng ký nhận các sự kiện quan trọng như cuộc gọi thoại. Giai đoạn duy trì xảy ra định kỳ, thường là mỗi vài giờ một lần, và kéo dài trong một khoảng thời gian ngắn.

Ngoài việc hạn chế hoạt động của các ứng dụng, Chế độ Doze cũng có thể giới hạn hoạt động của hệ thống bằng cách làm chậm tần suất cập nhật vị trí, đóng kết nối Wi-Fi và Bluetooth, và hạn chế các tác vụ nền khác.

App Standby, mặt khác, là một tính năng ứng dụng cụ thể được giới thiệu cùng với Chế độ Doze trong Android 6.0 Marshmallow. Nó được thiết kế để giới hạn hoạt động của các ứng dụng khi chúng không được sử dụng trong một thời gian dài.

Khi một ứng dụng ở chế độ App Standby, nó sẽ không nhận được bất kỳ dữ liệu mạng nào và không thực hiện các công việc nền. Tuy nhiên, ứng dụng vẫn có thể hiển thị thông báo và đăng ký nhận các sự kiện như cuộc gọi thoại, tin nhắn và đồng bộ hóa lịch.

App Standby được kích hoạt sau một khoảng thời gian nhất định khi ứng dụng không được sử dụng. Thời gian này có thể được điều chỉnh bởi người dùng hoặc do nhà sản xuất thiết bị quy định. Nếu người dùng mở ứng dụng, App Standby sẽ tự động tắt để cho phép ứng dụng hoạt động bình thường.

Cả Chế độ Doze và App Standby đều có thể được vô hiệu hóa bởi người dùng hoặc bởi các ứng dụng có quyền đặc biệt. Tuy nhiên, điều này có thể ảnh hưởng đáng kể đến tuổi thọ pin của thiết bị.

Để đạt được hiệu quả tối ưu về tiết kiệm pin, các nhà phát triển ứng dụng nên tuân thủ các hướng dẫn và khuyến nghị của Google về việc tương tác với Chế độ Doze và App Standby. Điều này bao gồm việc:

  1. Sử dụng các API quản lý công việc nền (JobScheduler hoặc WorkManager) để đảm bảo rằng các công việc nền của ứng dụng được thực hiện hiệu quả và không gây ra tình trạng tiêu thụ pin không cần thiết.

  2. Tận dụng các giai đoạn duy trì của Chế độ Doze để thực hiện các tác vụ đồng bộ hóa và tải xuống dữ liệu.

  3. Tối ưu hóa việc sử dụng GPS, Wi-Fi và Bluetooth để giảm thiểu tiêu thụ pin khi ứng dụng không được sử dụng.

  4. Sử dụng các thông báo thông minh và có ý nghĩa để đảm bảo rằng ứng dụng vẫn có thể giao tiếp với người dùng ngay cả khi ở chế độ App Standby.

  5. Cung cấp cho người dùng các tùy chọn để điều chỉnh cách ứng dụng tương tác với Chế độ Doze và App Standby.

Ngoài việc tuân thủ các hướng dẫn của Google, các nhà phát triển cũng cần hiểu rõ cách thức hoạt động của Chế độ Doze và App Standby để tối ưu hóa hiệu suất và trải nghiệm người dùng của ứng dụng.

Chế độ Doze hoạt động dựa trên một số điều kiện nhất định. Trước tiên, thiết bị phải ở trạng thái nghỉ, có nghĩa là màn hình phải tắt và không có hoạt động của người dùng trong một khoảng thời gian nhất định (thường là 30 phút). Thứ hai, thiết bị phải không di chuyển, được xác định bằng cảm biến chuyển động. Cuối cùng, thiết bị không được cắm sạc.

Khi tất cả các điều kiện này được đáp ứng, Chế độ Doze sẽ được kích hoạt và hệ thống sẽ bắt đầu hạn chế hoạt động của các ứng dụng. Trong giai đoạn đầu tiên của Chế độ Doze, hệ thống sẽ ngăn chặn các ứng dụng truy cập mạng và thực hiện công việc nền. Tuy nhiên, các ứng dụng vẫn có thể nhận được thông báo và đăng ký nhận các sự kiện quan trọng như cuộc gọi thoại.

Sau một khoảng thời gian nhất định (thường là vài tiếng), Chế độ Doze sẽ chuyển sang giai đoạn thứ hai, gọi là "Doze nâng cao". Trong giai đoạn này, hệ thống sẽ hạn chế hoạt động của các ứng dụng một cách nghiêm ngặt hơn, bao gồm việc ngăn chắn các thông báo và sự kiện quan trọng. Tuy nhiên, các ứng dụng vẫn có thể hoạt động trong các giai đoạn duy trì định kỳ.

Về phần App Standby, nó cũng được kích hoạt dựa trên một số điều kiện nhất định. Khi một ứng dụng không được sử dụng trong một khoảng thời gian nhất định (thường là từ 2-3 ngày), hệ thống sẽ đưa ứng dụng đó vào chế độ App Standby. Trong chế độ này, ứng dụng sẽ không nhận được dữ liệu mạng và không thực hiện công việc nền.

Tuy nhiên, ứng dụng vẫn có thể nhận được thông báo và đăng ký nhận các sự kiện quan trọng như cuộc gọi thoại, tin nhắn và đồng bộ hóa lịch. Nếu người dùng mở ứng dụng, App Standby sẽ tự động tắt và ứng dụng sẽ hoạt động bình thường.

Cả Chế độ Doze và App Standby đều có thể được điều chỉnh hoặc vô hiệu hóa bởi người dùng hoặc bởi các ứng dụng có quyền đặc biệt. Trong trường hợp vô hiệu hóa, các ứng dụng sẽ hoạt động như bình thường nhưng có thể ảnh hưởng đáng kể đến tuổi thọ pin của thiết bị.

Để giúp người dùng quản lý các tính năng này, Android cung cấp một số tùy chọn trong phần cài đặt Pin và Tuổi thọ Pin. Người dùng có thể xem các ứng dụng đang sử dụng nhiều pin nhất và có thể chọn vô hiệu hóa Chế độ Doze hoặc App Standby cho các ứng dụng cụ thể.

Ngoài ra, các nhà sản xuất thiết bị cũng có thể tùy chỉnh hoặc bổ sung các tính năng của riêng họ để quản lý và tối ưu hóa tuổi thọ pin trên thiết bị của mình. Ví dụ, Samsung có tính năng "Chế độ tiết kiệm pin" riêng, trong khi Huawei có "Quản lý pin thông minh".

Kết

Chế độ Doze và App Standby là những tính năng quan trọng trong Android để giúp kéo dài tuổi thọ pin của thiết bị. Chúng hoạt động dựa trên các điều kiện nhất định và có thể được điều chỉnh hoặc vô hiệu hóa bởi người dùng hoặc các ứng dụng có quyền đặc biệt. Để đạt được hiệu quả tối ưu, các nhà phát triển cần tuân thủ các hướng dẫn của Google và tối ưu hóa ứng dụng của mình để tương tác tốt với các tính năng này.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.