1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx

56 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tối Ưu Hiệu Suất Phần Cứng Và Tuổi Thọ Pin
Người hướng dẫn ThS. LBC
Trường học Học Viện Kỹ Thuật Mật Mã
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo học phần
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 56
Dung lượng 4,64 MB
File đính kèm bugreport1.3.zip (10 MB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI (7)
    • 1.1. Giới thiệu về Hệ điều hành Android (7)
    • 1.2. Tổng quan về hiệu suất (8)
    • 1.3. Hiệu suất trên android đối với người dùng (8)
  • CHƯƠNG 2: TỐI ƯU HIỆU SUẤT PHẦN CỨNG VÀ TUỔI THỌ PIN (10)
    • 2.1. Tính năng phần cứng trong android (10)
    • 2.2. Càng thu thập nhiều thông tin thì càng ảnh hưởng hao pin (11)
    • 2.3. Nguyên nhân gây ra hao pin (11)
      • 2.3.1. Cấu hình nguồn android (11)
      • 2.3.2. Màn hình (13)
      • 2.3.3. Radios (14)
      • 2.3.4. CPU (15)
      • 2.3.5. Cảm biến bổ sung (15)
      • 2.3.6. Chế độ ngủ! (16)
      • 2.3.7. Wakelocks và báo thức (16)
      • 2.3.8. Framework Doze (17)
    • 2.4. Phân tích tiêu hao pin cơ bản (17)
      • 2.4.1. Ứng dụng tiêu hao pin cụ thể (20)
      • 2.4.2. Kết hợp dữ liệu pin với dữ liệu sử dụng (22)
      • 2.4.3. Chế độ chờ ứng dụng (24)
    • 2.5. Phân tích tiêu hao pin nâng cao (24)
      • 2.5.2. Battery Historian (25)
      • 2.5.3. Battery Historian 2.0 (32)
    • 2.6. JobScheduler và giải pháp khắc phục vấn đề tiêu hao pin với API JobScheduler (35)
      • 2.6.1. Bối cảnh (35)
      • 2.6.2. Job Scheduler (36)
      • 2.6.3. Áp dụng JobScheduler (36)
    • 2.7. Work Manager (38)
      • 2.7.1. Easy to schedule (Dễ dàng lập lịch) (39)
      • 2.7.2. Easy to cancel (Dễ dàng hủy bỏ) (39)
      • 2.7.3. Easy to query (Dễ dàng truy vấn) (39)
      • 2.7.4. Support for all android version (Hỗ trợ tất cả các version của android) (39)
  • CHƯƠNG 3: NGHIÊN CỨU THỰC NGHIỆM (41)
    • 3.1. Battery Historian (41)
    • 3.2. JobScheduler (47)
    • 3.3. Work Manager (50)
  • KẾT LUẬN (55)
  • TÀI LIỆU THAM KHẢO (56)

Nội dung

tìm hiểu, nghiên cứu hiệu suất phần cứng và tuổi thọ pin với các số liệu cụ thể trên thiết bị thực tế , đánh giá mức độ ảnh hưởng và tiêu thụ oin của các phần mềm khác nhau lên phần cứng và đặc biệt là thời lượng pin của thiết bị android

TỔNG QUAN VỀ ĐỀ TÀI

Giới thiệu về Hệ điều hành Android

Android là hệ điều hành di động do Google phát triển, chủ yếu dành cho thiết bị màn hình cảm ứng như điện thoại và máy tính bảng Hệ điều hành này cho phép người dùng tương tác trực quan qua các cử chỉ như chạm và vuốt Ngoài ra, Google còn áp dụng Android cho các thiết bị khác như tivi, ô tô và đồng hồ thông minh, mỗi loại đều có giao diện thiết kế riêng biệt.

Hình 1.1: Hệ điều hành android

Hệ điều hành Android, được phát triển bởi Android.Inc tại Thung lũng Silicon và mua lại bởi Google vào năm 2005, đã ra mắt thiết bị đầu tiên vào năm 2007 Kể từ đó, các nhà phát triển phần mềm đã có thể sử dụng công nghệ Android để tạo ra ứng dụng di động, được phân phối qua các cửa hàng ứng dụng.

Tính đến tháng 1 năm 2020, Android chiếm 74,3% thị phần toàn cầu, trở thành hệ điều hành di động phổ biến nhất Trong khi đó, iOS của Apple đứng thứ hai với 24,8%.

Vào quý 2 năm 2017, Android chiếm 87,7% thị phần điện thoại thông minh toàn cầu, với 2 tỷ thiết bị được kích hoạt và 1,3 triệu lượt kích hoạt mỗi ngày Sự thành công này cũng khiến Android trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh, dẫn đến những cuộc chiến pháp lý trong ngành điện thoại.

Điện thoại Android có nhiều ưu điểm nổi bật, bao gồm kho ứng dụng đa dạng và mẫu mã phong phú Người dùng có thể mở rộng bộ nhớ thông qua thẻ nhớ, đồng thời khả năng tùy biến cao cho phép chỉnh sửa mà không bị can thiệp từ Google Chính vì vậy, Android được nhiều người ưa chuộng.

Một số nhược điểm của hệ thống bao gồm việc nhiều ứng dụng chạy ngầm làm chậm máy, một số ứng dụng chưa được tối ưu hóa tốt, chất lượng của một số ứng dụng còn kém, và dễ bị virus xâm nhập.

Tổng quan về hiệu suất

Hiệu suất ứng dụng di động có thể được hiểu theo nhiều cách khác nhau Nó không chỉ phản ánh cách thức hoạt động của ứng dụng mà còn cho thấy hiệu quả sử dụng và khả năng tạo ra sự hứng thú cho người dùng.

Hiệu suất trên android đối với người dùng

Hiệu suất ứng dụng rất phức tạp do sự đa dạng của hàng nghìn thiết bị với mức sức mạnh tính toán khác nhau Việc đảm bảo ứng dụng hoạt động mượt mà trên các thiết bị hàng đầu là một thành tựu đáng kể Chúng ta sẽ phân tích hiệu suất ứng dụng dựa trên các yếu tố như quản lý năng lượng, hiệu quả và tốc độ.

Bài viết sẽ trình bày các vấn đề chính mà các nhà phát triển ứng dụng di động thường gặp phải, đồng thời khám phá các công cụ hữu ích giúp xác định và phân tích các vấn đề về hiệu suất phổ biến trong tất cả các ứng dụng di động.

Một số nguyên nhân dẫn đến thiết bị android bị giảm hiệu suất khi sử dụng thực tế phổ biến:

Các bản cập nhật hệ điều hành Android ngày càng có dung lượng lớn, chiếm nhiều tài nguyên hơn Trong 1-2 năm đầu sau khi mua máy, nhà sản xuất vẫn chú trọng tối ưu hóa thiết bị Tuy nhiên, sau 3-4 năm, các bản cập nhật có thể dẫn đến suy giảm hiệu năng.

Các ứng dụng trên Play Store ngày càng phong phú và tiêu tốn nhiều tài nguyên hệ thống hơn, nhờ vào việc bổ sung nhiều chức năng mới.

Nhiều ứng dụng chạy nền có thể làm chậm thiết bị Android của bạn, ngay cả khi bạn đã đóng chúng Chúng vẫn tiếp tục hoạt động âm thầm, thực hiện cập nhật và tải xuống thông tin, gây ảnh hưởng đến hiệu suất của máy.

Phần cứng lỗi thời có thể làm giảm hiệu suất của thiết bị Android Mỗi thiết bị có một vòng đời nhất định, và khi vượt qua ngưỡng này, khả năng hoạt động sẽ suy giảm Ví dụ, khi các ô nhớ gặp vấn đề, hệ điều hành phải chuyển sang lưu hoặc đọc dữ liệu từ ô khác, dẫn đến thời gian chờ lâu hơn và làm cho ứng dụng trở nên kém nhạy Ngoài ra, nếu bộ nhớ máy không đủ lớn, các file sẽ không có chỗ chứa, làm chậm tiến trình xử lý.

Sự ổn định của mạng là yếu tố quan trọng trong việc kết nối các thiết bị, vì bất kỳ sự cố nào cũng có thể làm gián đoạn chuỗi kết nối Hiệu suất mạng không ổn định dẫn đến trải nghiệm người dùng kém, ảnh hưởng đến hoạt động của ứng dụng trên thiết bị Android Do đó, việc đo lường hiệu suất phần cứng và tuổi thọ pin là cần thiết trong phát triển ứng dụng di động.

Trong bài viết này, chúng ta sẽ khám phá cách tối ưu hóa hiệu suất giao diện người dùng, cùng với các công cụ để cấu hình hiệu suất phần cứng và kéo dài tuổi thọ pin.

TỐI ƯU HIỆU SUẤT PHẦN CỨNG VÀ TUỔI THỌ PIN

Tính năng phần cứng trong android

Chúng ta xem xét một số cảm biến có trên Samsung S5:

13 Đài phát thanh di động

Để nhanh chóng nắm bắt các khía cạnh hiệu suất của các cảm biến, việc xem xét mức tiêu hao điện năng là rất quan trọng Những bộ phận tiêu thụ nhiều điện năng nhất trong thiết bị cũng chính là những phần cần được chú ý và quản lý cẩn thận.

Càng thu thập nhiều thông tin thì càng ảnh hưởng hao pin

Chúng tôi muốn tận dụng các tính năng tuyệt vời trên thiết bị Android để thu thập thông tin hữu ích cho khách hàng Tuy nhiên, việc thu thập quá nhiều dữ liệu có thể ảnh hưởng đến tuổi thọ pin, vì vậy cần tìm ra sự cân bằng giữa lượng thông tin và mức tiêu thụ điện năng Đảm bảo rằng tất cả các tác vụ hoạt động nhanh chóng sẽ giúp tối ưu hóa hiệu suất và tiết kiệm pin.

Google đã chỉ ra rằng 1 giây sử dụng thiết bị tương đương với 2 phút thời gian chờ, điều này ảnh hưởng đến người dùng khi xem xét thông số kỹ thuật của thiết bị Ví dụ, Nexus 5 có thời gian chờ lên đến 300 giờ, nhưng khi bắt đầu cài đặt ứng dụng, thời lượng pin giảm xuống 35 lần Sử dụng ứng dụng trong 5 phút có thể tiêu tốn từ 1% đến 1,6% pin, và con số này tăng lên khi ứng dụng sử dụng nhiều tài nguyên hơn Điều này đặc biệt rõ ràng ở các trò chơi Android miễn phí có quảng cáo, khi chơi trong 10-15 phút, điện thoại thường nóng lên do tiêu tốn nhiều pin Một nghiên cứu vào tháng 3 năm 2015 cho thấy các ứng dụng có quảng cáo sử dụng CPU nhiều hơn 56%, bộ nhớ nhiều hơn 22% và pin nhiều hơn 15% so với phiên bản không có quảng cáo.

Hầu hết các vấn đề về pin trên thiết bị di động không phải do phần cứng mà chủ yếu xuất phát từ các ứng dụng thiết kế kém, gây lạm dụng tài nguyên của thiết bị Trong chương này, chúng ta sẽ khám phá những sai lầm phổ biến khi sử dụng phần cứng và cách khắc phục chúng trong ứng dụng Android.

Nguyên nhân gây ra hao pin

Menu cài đặt pin cung cấp báo cáo phần trăm hao pin cho từng ứng dụng đang chạy trên thiết bị Các tính toán tiêu hao năng lượng này được xác định bởi cấu hình Android và các thành phần phần cứng chính của thiết bị Khi ứng dụng hoạt động và kích hoạt các phần khác nhau của thiết bị, hệ thống sẽ tính toán lượng điện năng mà mỗi thành phần sử dụng và gán mức tiêu hao điện cho các quy trình tương ứng Tệp XML liên quan sẽ được trình bày như sau:

65

202

87

1

3

240

129

29

215

125

25

1

3.1

2800

Màn hình, radio (di động, Wi-Fi, Bluetooth và GPS) và CPU là những phần cứng tiêu tốn năng lượng nhiều nhất trên các thiết bị di động hiện nay Khi tối ưu hóa hiệu suất ứng dụng, các thành phần này không chỉ ảnh hưởng đến hiệu suất mà còn đến việc hao pin của thiết bị Do đó, việc cải thiện hiệu suất ứng dụng cũng đồng nghĩa với việc nâng cao tuổi thọ pin cho người dùng.

Màn hình là nguyên nhân chính gây tiêu hao pin, đặc biệt khi độ sáng cao, làm tăng mức tiêu thụ điện năng Để giảm thiểu tình trạng này, bạn có thể điều chỉnh các khía cạnh giao diện nhằm hạn chế việc tiêu hao pin khi ứng dụng đang hoạt động.

Trong các thiết bị Android, có hai loại màn hình chính là LED (Light Emitting Diode) và LCD (Liquid Crystal Display) Các nhà sản xuất thường phát triển các phiên bản độc quyền của những màn hình này, chẳng hạn như AMOLED (LED hữu cơ ma trận hoạt động) và Super LCD3, với những đặc điểm khác nhau về chế độ xem và công suất Tuy nhiên, khi phân tích ở mức độ tổng quát, chúng ta có thể nhận thấy chỉ có hai loại màn hình cơ bản.

Màn hình LCD hoạt động dựa trên hàng nghìn tinh thể lỏng, tạo ra màu sắc cho từng pixel, với đèn nền chiếu sáng đồng thời Việc tạo màu cho mỗi pixel tiêu tốn ít năng lượng nhất, trong khi chi phí năng lượng chủ yếu đến từ ánh sáng chiếu qua các tinh thể lỏng Do đó, mỗi pixel tiêu tốn một lượng năng lượng tương đương, bất kể màu sắc hiển thị.

2.3.2.1 LED Đối với màn hình LED, mỗi pixel phát ra cả màu sắc và ánh sáng Mỗi pixel được tạo ra bởi sự sắp xếp của các đèn LED màu đỏ, xanh lam và xanh lá cây (và những sự sắp xếp này rất phức tạp và những người đam mê màn hình có những cuộc tranh luận gay gắt về cách tốt nhất) Bằng cách sửa đổi độ sáng và màu sắc của mỗi đèn LED, pixel có thể có màu sắc mong muốn Vì mỗi pixel được biểu thị bằng 3 nguồn sáng, với cường độ hơi khác nhau tùy thuộc vào màu sắc, lượng công suất sử dụng cho các màu khác nhau có thể thay đổi, tùy thuộc vào màu sắc hiển thị Màu đen, không có tất cả các màu, sử dụng năng lượng bằng không, trong khi màu trắng - là cả ba màu được trộn ở độ sáng cao sẽ sử dụng năng lượng cao hơn Nói chung, điều này có nghĩa là các màu tối hơn sẽ sử dụng ít năng lượng hơn các màu sáng hơn Đây là lý do chính tại sao một số ứng dụng tin tức và mạng xã hội (ứng dụng có nhiều màn hình trống) sử dụng nền đen.

Mặc dù nền đen trên màn hình LCD có rất ít lợi ích, nhưng tiềm năng mạnh mẽ từ màn hình LED khiến việc sử dụng nền tối cho màn hình mở trong thời gian dài trở nên đáng xem xét.

Theo cấu hình XML, radio di động và wifi tiêu tốn pin tương đương, nhưng kết nối di động thường kéo dài hơn, dẫn đến việc sử dụng pin nhiều hơn so với wifi Để tối ưu hóa việc sử dụng radio cho ứng dụng, bạn nên tải xuống nhiều dữ liệu cùng lúc và tắt radio khi không còn cần thiết Cách này có thể cải thiện hiệu suất gấp đôi, giúp màn hình tải nhanh hơn và giảm mức tiêu hao pin.

Cảm biến GPS giúp xác định vị trí với độ chính xác cao, tiết kiệm thời gian và năng lượng Bằng cách tránh sử dụng GPS, ứng dụng của bạn có thể hoạt động nhanh hơn và tiêu thụ ít điện năng hơn, nhờ vào việc sử dụng vị trí có sẵn trên thiết bị.

Nếu ứng dụng của bạn là trò chơi hoặc yêu cầu tính toán nặng, CPU sẽ phải hoạt động mạnh mẽ Ngoài ra, nếu cần tính toán nền, CPU sẽ được sử dụng cho các phép tính bổ sung Như cấu hình nguồn XML cho thấy, mức tiêu hao pin tăng lên khi CPU hoạt động cao Việc sử dụng CPU cũng bị ảnh hưởng bởi màn hình, mạng và các phép tính khác diễn ra trên thiết bị.

Điện thoại của chúng ta được trang bị nhiều cảm biến bổ sung, giúp các nhà phát triển tạo ra những ứng dụng thực sự hữu ích, như đã đề cập trong Chương 1.

Khi sử dụng cảm biến, bạn có thể áp dụng phương thức getPower() để truy xuất năng lượng của cảm biến Nhiều ứng dụng miễn phí trên Google Play cung cấp danh sách tất cả các cảm biến trên thiết bị cùng với mức tiêu thụ năng lượng hiện tại (đo bằng miliampe).

Mỗi cảm biến có tần số báo cáo sự kiện tối đa riêng, vì vậy nhà phát triển cần chọn tỷ lệ mẫu phù hợp với ứng dụng Bên cạnh cảm biến, CPU và bộ nhớ của thiết bị cũng đóng vai trò quan trọng trong việc xử lý dữ liệu và lấy mẫu quá mức các tài nguyên đã được kiểm tra.

Khi hoàn tất việc sử dụng cảm biến, hãy nhớ hủy đăng ký để ngăn chặn việc tiếp tục báo cáo dữ liệu Việc giữ cho trình theo dõi hoạt động sẽ gây tải cho bộ xử lý, tiêu tốn bộ nhớ và làm giảm tuổi thọ pin.

2.3.6 Chế độ ngủ! Điều quan trọng là ứng dụng của bạn phải chuyển sang chế độ ngủ khi nó không hoạt động Việc giải phóng các cảm biến, radio này và tắt màn hình sẽ giúp bạn tiết kiệm pin về lâu dài Mặc dù ứng dụng của bạn chuyển sang chế độ ngủ là điều quan trọng, nhưng cũng cần quan tâm - đánh giá đầy đủ cách ứng dụng của bạn hoạt động Bằng cách lưu ý đến tần suất ứng dụng của bạn đánh thức thiết bị, bạn sẽ đi được một chặng đường dài trong việc tiết kiệm pin cho khách hàng của mình.

Phân tích tiêu hao pin cơ bản

Chúng tôi đã thảo luận về cách phần cứng sử dụng pin và cách Android tính toán mức tiêu hao pin của ứng dụng Việc đánh thức ứng dụng không hiệu quả có thể dẫn đến tiêu hao pin lớn Nếu ứng dụng là nguyên nhân gây hao pin, bạn có thể xác định nguyên nhân hàng đầu trên thiết bị của mình thông qua menu cài đặt pin, nơi cung cấp nhiều thông tin để chẩn đoán các vấn đề tiêu hao pin từ ứng dụng, và điều này có sẵn cho tất cả người dùng Android.

Khi mở menu Pin (Cài đặt → Pin), bạn sẽ thấy biểu đồ tổng quát hiển thị mức tiêu hao pin theo thời gian, thường tính từ lần sạc 100% gần nhất Dưới biểu đồ, có danh sách các ứng dụng đã ảnh hưởng đến mức tiêu hao pin trong trải nghiệm mà bạn đã chọn.

Hình 2.1: The KitKat (left) and Lollipop (right) Battery Menus

Menu đã được cập nhật giữa Kitkat và Lollipop, với Kitkat chỉ hiển thị mức sử dụng pin hiện tại, trong khi Lollipop cung cấp cả mức sử dụng và dự đoán thời gian còn lại cho đến khi cần sạc lại, dựa trên thói quen sử dụng của bạn Bằng cách chạm vào biểu đồ ở trên cùng, bạn có thể mở rộng để xem thêm chi tiết cụ thể về hoạt động của thiết bị.

Hình 2.2: KitKat (L) and Lollipop Battery Details

Menu mở rộng cung cấp thông tin về thời gian sử dụng thiết bị ở các tần số di động khác nhau, với màu sắc xanh lục, vàng và đỏ thể hiện chất lượng tín hiệu Nó cũng hiển thị thời gian bật Wi-Fi, thời gian hoạt động của thiết bị, thời gian màn hình được đánh thức và thời gian sạc Người dùng nên ưu tiên chế độ xem Lollipop, vì nó không chỉ cung cấp dữ liệu thực tế về pin (màu xanh lục) mà còn dự đoán thời gian còn lại (màu xám).

Hình ảnh KitKat cho thấy tình trạng xả pin nhanh chóng khi tín hiệu kém, với màn hình sáng và điện thoại bị ngắt Tương tự, thiết bị Lollipop cũng ghi nhận sự sụt giảm pin ngay trước khi ảnh chụp màn hình được thực hiện, thể hiện qua biểu đồ chuyển từ màu xanh lục sang màu xám.

Khi thiết bị ở chế độ thức nhưng màn hình tắt, đây là dấu hiệu cho thấy có ứng dụng đang tiêu hao pin Điều này cho thấy thiết bị đang sử dụng khóa hoặc chuông báo trong khi bạn không sử dụng Nếu hiện tượng này xảy ra thường xuyên, bạn nên kiểm tra các ứng dụng có thể gây cạn pin và xác định ứng dụng nào đang gây ra vấn đề.

2.4.1 Ứng dụng tiêu hao pin cụ thể

Khi quay lại màn hình menu chính của pin và cuộn xuống dưới dữ liệu biểu đồ pin, bạn sẽ thấy thông tin về mức tiêu hao pin của từng ứng dụng Bằng cách chọn một ứng dụng cụ thể, bạn có thể xem mức sử dụng CPU của ứng dụng đó trong chế độ foreground và tổng thể Menu này cũng cung cấp thông tin về mức sử dụng dữ liệu (foreground/background qua cellular/Wi-Fi) và thời gian mà ứng dụng giữ thiết bị ở chế độ thức.

Mặc dù dữ liệu và mức sử dụng ứng dụng nền rất ấn tượng, nhưng việc tiêu tốn nhiều tài nguyên nền có thể khiến thiết bị của bạn không thể duy trì trạng thái ngủ.

Ví dụ, đây là các menu từ Facebook và Spotify từ Menu Pin KitKat:

Hình 2.3: Chi tiết về Pin của Facebook và Spotify

Theo nghiên cứu, Facebook được cho là nguyên nhân gây ra 4% mức tiêu hao pin trên thiết bị Android Việc sử dụng CPU của ứng dụng chủ yếu diễn ra ở chế độ foreground, với gần 11 phút trong tổng số 11,5 phút Ngoài ra, có thêm 30 giây sử dụng CPU ở chế độ nền, có thể liên quan đến việc tải các bản cập nhật từ máy chủ Ứng dụng này giữ cho điện thoại hoạt động trong 1 phút khi màn hình khóa, do người dùng xem một video dài 1 phút trên nguồn cấp dữ liệu Mặc dù Facebook không tiêu tốn nhiều dữ liệu di động, nhưng tổng lượng dữ liệu Wi-Fi được sử dụng là khá lớn, bao gồm cả video và hình ảnh.

Việc sử dụng Spotify khác biệt rõ rệt so với Facebook, đặc biệt khi phát trực tuyến nhạc Màn hình gần như tắt trong suốt quá trình này, với biểu đồ pin cho thấy hầu hết quá trình xử lý của CPU diễn ra ở chế độ nền khoảng 12 phút Thiết bị được duy trì ở chế độ thức, có thể có khóa âm thanh, trong gần 2 giờ Mặc dù lưu lượng dữ liệu cao, nhưng không vượt quá mức cho phép trong 2 giờ phát nhạc trực tuyến.

Thông tin trong menu Pin cho biết lượng dữ liệu được gửi và nhận từ lần sạc cuối cùng, nhưng không phản ánh hiệu quả truyền dữ liệu Google đã điều chỉnh cách báo cáo dữ liệu trong phiên bản Lollipop của menu pin.

Hình 2.4: Chi tiết về Pin Spotify trong KitKat và Lollipop

Báo cáo hiện tại sử dụng dữ liệu từ menu pin Lollipop dựa trên các gói thay vì KB, được phân chia thành các danh mục Wi-Fi và di động Nó cũng cung cấp thông tin về thời gian mà ứng dụng sử dụng đài di động Những báo cáo này cho phép ước tính mật độ lưu lượng vô tuyến, với ví dụ như Spotify gửi 40.000 gói tin trong 39 phút, tương đương với 1 gói tin mỗi 60 mili giây, cho thấy lưu lượng truy cập rất dày đặc Điều này ngụ ý rằng dữ liệu được gửi nhanh chóng, giúp người dùng sử dụng dữ liệu hiệu quả và giảm thiểu thời gian bật đài.

2.4.2 Kết hợp dữ liệu pin với dữ liệu sử dụng Để xử lý tốt hơn việc sử dụng dữ liệu của các ứng dụng dành cho thiết bị di động, bạn có thể sử dụng menu Data Usage Khi bạn chọn một ứng dụng, bạn sẽ được cung cấp lượng dữ liệu được sử dụng ở nền trước và nền sau Trong trường hợp này, tôi đã di chuyển các thanh trượt để chỉ hiển thị dữ liệu trong 2 ngày, cho phép tôi xác định mức sử dụng dữ liệu nền cho các ứng dụng và dữ liệu nền riêng cho Facebook chỉ trong 24 giờ.

Hình 2.5: Chi tiết dữ liệu Facebook

Trong phiên bản Lollipop, menu đã được điều chỉnh, loại bỏ các thanh trượt để thay đổi ngày đo Để thực hiện phân tích sắp tới, bạn cần thiết lập lại đồ thị với dữ liệu trước mỗi lần kiểm tra, nhằm chỉ hiển thị dữ liệu trong thời gian chạy thử nghiệm.

Hình 2.6: Chi tiết dữ liệu Spotify Lollipop

Trước khi phân tích Hình 2.6, cần thiết lập lại tổng dữ liệu di động của điện thoại để so sánh lưu lượng KB với số lượng gói tin So sánh mức sử dụng dữ liệu với dữ liệu gói trong Hình 2.4 cho thấy 40.024 gói nhận được đã phân phối 53,57 MB dữ liệu, tương đương với 1.403 byte/gói và 23,6 kb/s Đây là mẫu lưu lượng dữ liệu dày đặc, phù hợp cho ứng dụng phát nhạc trực tuyến Nếu điện thoại có ứng dụng sử dụng nhiều gói với số byte thấp hoặc tốc độ thông lượng thấp, nên xem xét tắt dữ liệu hoặc dữ liệu nền cho các ứng dụng này, vì chúng có thể tiêu hao năng lượng không hiệu quả.

Phân tích tiêu hao pin nâng cao

Số liệu thống kê về pin là một kho dữ liệu lớn, cung cấp thông tin chi tiết về cách các thiết bị sử dụng pin trong các quy trình đang chạy Tính năng này được giới thiệu lần đầu trong KitKat và đã được cập nhật với nhiều dữ liệu hơn trong Lollipop, bao gồm thông tin về mọi hành động wakelock trên thiết bị Để thu thập thông tin hiệu quả, bạn nên đặt lại dữ liệu và bật báo cáo wakelock đầy đủ để có được nhiều dữ liệu nhất có thể.

Batterystats là một kho dữ liệu lớn về cách thiết bị và các quy trình đang chạy sử dụng pin Được giới thiệu trong KitKat và cập nhật trong Lollipop, nó bao gồm dữ liệu về mọi hành động wakelock trên thiết bị Trước khi thu thập dấu vết, bạn nên đặt lại dữ liệu và bật báo cáo wakelock đầy đủ để có được nhiều thông tin nhất có thể.

Khi dữ liệu liên tục được truyền qua thiết bị, chúng ta có thể nhận thấy có rất nhiều thông tin quan trọng Hãy khám phá một số thông tin hữu ích từ luồng đầu ra, bao gồm các số liệu thống kê cơ bản của thiết bị như thời gian hoạt động ở các trạng thái vô tuyến khác nhau, lượng dữ liệu đã gửi, và thời gian thiết bị duy trì trong wakelocks toàn bộ hoặc một phần.

ChatHeadService và AnalyticsService chủ yếu sử dụng trong một phút ChatHead hiển thị một bong bóng trên màn hình chính của thiết bị, thông báo rằng có tin nhắn mới Nó hoạt động trong 1 phút để tôi có thể nhắn lại Sau khi ChatHeadService kết thúc, AnalyticsService tiếp tục hoạt động thêm vài giây để báo cáo rằng tôi đã không phản hồi.

BatteryStats cung cấp thông tin quan trọng để xác định cách các ứng dụng di động tiêu thụ pin Việc phân tích chi tiết ứng dụng giúp phát hiện các vấn đề tiềm ẩn, nhưng có thể tốn thời gian Để đơn giản hóa quá trình này, Google đã phát triển Battery Historian, một công cụ lập biểu đồ dữ liệu pin thô thành tài liệu HTML Bạn có thể tạo trang web hiển thị thông tin thống kê pin bằng cách chạy các lệnh sau: `adb bugreport > bugreport.txt` và `./historian.py bugreport.txt > out.html`.

Tại Google I/O 2015, Battery Historian 2.0 đã được giới thiệu, với báo cáo hoàn toàn mới được viết lại bằng ngôn ngữ GO Công cụ này cung cấp thông tin chi tiết hơn, giúp người dùng phân tích dữ liệu pin cho ứng dụng của mình một cách hiệu quả hơn.

Hình 2.7: Chế độ xem hàng đầu về lịch sử pin Android Lollipop

Biểu đồ này hiển thị các khoảng thời gian 1 phút bằng các mục màu trắng Khi di chuột qua bất kỳ mục nào, bạn sẽ nhận được thêm thông tin chi tiết.

1 Liệt kê các tiến trình đang hoạt động trên màn hình Trong ví dụ này là trò chơi Plague Inc.

2 Thông tin pin: a Trạng thái: Pin đang xả (so với khi cắm sạc vào) b Tình trạng: Tình trạng pin từ API trình quản lý pin c Cổng sạc: Thiết bị đã được cắm sạc vào chưa?

3 Thông tin vô tuyến: a Cường độ tín hiệu: hiển thị những thay đổi trong tín hiệu di động (trong trường hợp này là từ kém, trung bình và mạnh) a Wi-fi: Đã ngắt kết nối b Wi-Fi: Tín hiệu (Tín hiệu Wi-Fi được phát hiện - ngay cả khi Wi-Fi tắt, do Cài đặt Nâng cao Wi-Fi để luôn quét) c Phone_scanning: Nếu không có tín hiệu, điện thoại sẽ quét (sử dụng nhiều pin a Màn hình: Bật/Tắt và bật thời lượng. b Đã cắm sạc: Nguồn điện (tương tự như dữ liệu Pin ở trên) c data_conn di chuyển qua các kết nối màu xanh cho thấy việc chuyển đổi dữ liệu di động từ HSPA sang HSPAP

1 phone_state: hiển thị các thay đổi trong phạm vi phủ sóng di động hoặc nếu bạn nhận được cuộc gọi điện thoại

2 fg: Ứng dụng nền Các ứng dụng chạy trong nền ít có khả năng bị tắt bởi những hạn chế về dụng lượng bộ nhớ trong Chúng ta có thể thấy (ngay khi tắt màn hình, Facebook đã trở thánh ứng dụng nền để xử lý tin nhắn nhận được)

2 đồng bộ: quy trình đồng bộ hóa với máy chủ

Một yếu tố quan trọng cần xem xét để đánh giá tuổi thọ pin là tần suất đồng bộ hóa và wakelocks Khi cuộn màn hình xuống, chúng ta có thể thấy thêm thông tin về các wakelocks và các vấn đề liên quan đến việc tiêu tốn pin.

Hình 2.8: Chế độ xem dưới cùng lịch sử pin Android Lollipop

1 wake_lock: Có một khóa kéo dài giữ cho màn hình luôn bật trong trò chơi.

3 Đang chạy: Điện thoại đang chạy, khi đang chơi một trò chơi.

4 Wake_reason: Đây là khi thiết bị hoạt động lại từ chế độ ngủ Không có ảnh chụp màn hình, vì thiết bị đã hoạt động lưu toàn bộ Hàng này liệt kê tất cả các quy trình cấp bộ xử lý đang chạy trên thiết bị của bạn Một số lý do khởi chạy phổ biến là: a qcom, smd-modem: Trình điều khiển Bộ nhớ Dùng chung Qualcomm tương tác với b qcom, smd-rpm: Trình điều khiển Bộ nhớ Dùng chung Qualcomm - Trình quản lý Nguồn điện c qcom, mpm Qualcomm: MSM Sleep Power Manager: Tắt đồng hồ và đặt thiết bị ở chế độ ngủ d qcom, spmi Giao diện quản lý năng lượng hệ thống Qualcomm: cũng hoạt động để đặt thiết bị trở lại chế độ ngủ.

5 Wake_lock_in: Tại đây chúng ta có thể xem những tiến trình nào đang chạy và gây ra lỗi wakelock hoặc báo động xảy ra Trong ảnh chụp màn hình này có nhiều Wakelocks từ quá trình phát âm thanh trong trò chơi (gần 2.000 lỗi âm thanh xảy ra khi các mẫu khác nhau được phát) Chúng tôi cũng nhìn thấy wakelock màn hình (hàng thứ 5 có một dòng tô màu hồng).

1 mobile_radio: Thời gian di động vô tuyến được kết nối (không nhất thiết phải truyền, nhưng được kết nối với mạng) Có những khoảng trống khi điện thoại nhảy từ các phần khác nhau của HSPA.

2 Người dùng: cho các trường hợp có thể sử dụng nhiều tài khoản người dùng.

Trong bài viết này, chúng ta sẽ khám phá các hoạt động đang diễn ra trên thiết bị di động Như đã đề cập trong phần “Wakelocks”, khi ứng dụng hoạt động, nó có thể tiêu hao pin Tuy nhiên, trong trường hợp này, vấn đề không nghiêm trọng vì đây là một trò chơi đang diễn ra Chúng ta sẽ xem xét thêm một số dấu vết khác để tìm hiểu hiện tượng wakelock thú vị này.

Tìm lỗi Wakelocks bằng Trình sử dụng pin

JobScheduler và giải pháp khắc phục vấn đề tiêu hao pin với API JobScheduler

Nếu bạn cần hẹn giờ cho một công việc trong tương lai, hệ thống Android hiện tại cung cấp hai cách để thực hiện điều này, ngay cả khi ứng dụng của bạn không đang hoạt động như một báo thức.

AlarmManager là một lựa chọn lý tưởng cho việc lập kế hoạch sự kiện local khi cần thực hiện vào thời điểm chính xác hoặc trong khoảng thời gian không xác định Tuy nhiên, tài liệu không khuyến khích sử dụng AlarmManager cho các nhiệm vụ liên quan đến mạng Thay vào đó, chúng ta nên xem xét một số lựa chọn tốt hơn cho Job Scheduler trong lĩnh vực networking.

Android 5.0 Lollipop (API 21) giới thiệu một Job Scheduler API này cho phép công việc hàng loạt khi các thiết bị này có nhiều nguồn lực sẵn có Nói chung API này có thể được dùng để sắp xếp tất cả mọi thứ mà không phải là thời điểm quan trọng cho người sử dụng.

So với AlarmManager, JobScheduler cho phép xử lý đồng thời nhiều job, trong khi AlarmManager chỉ hỗ trợ một job, giúp ứng dụng tiết kiệm pin hơn JobScheduler vẫn hoạt động sau khi thiết bị khởi động lại, nhưng cần phải thêm cơ chế lắng nghe để khởi động lại khi thiết bị khởi động.

Bạn sử dụng Job Schedule trong những điệu kiện cụ thể mà AlarmManager không hỗ trợ như:

 Device sạc pin hay không.

 Device kết nối unmetered network hay wifi.

 Device đang chế độ nghỉ hay không.

 Bắt đầu trước một thời hạn nhất định.

 Bắt đầu trong một cửa sổ thời gian được xác định trước.

 Bắt đầu sau khi một sự chậm trễ tối thiểu, ví dụ, chờ tối thiểu là 10 phút.

Công việc của ứng dụng là tải hình ảnh từ máy chủ, với tần suất mỗi 60 giây Mặc dù API sẽ tạo kết nối trong khoảng thời gian này, thời gian chính xác không cần phải là 60 giây Trong khoảng 14 phút, ứng dụng sẽ thực hiện 14 lần ping.

Hình 2.14: Kết nối định kỳ 60 giây trong Bộ lập lịch công việc

Biểu đồ tiếp theo minh họa một bài kiểm tra tương tự, trong đó chu kỳ tải xuống được thiết lập mỗi 150 giây với cùng một tỷ lệ, dẫn đến tổng cộng 6 kết nối trong 14 phút.

Hình 2.15: Kết nối định kỳ 150 giây trong Bộ lập lịch công việc

Với wakelocks truyền thống, giả định rằng các ứng dụng cô lập chạy đồng thời sẽ tạo ra 20 kết nối không trùng lặp Tuy nhiên, khi sử dụng JobScheduler để chạy đồng thời 2 công việc, hệ thống đã đồng bộ hóa các kết nối định kỳ, giúp giảm mức độ hao pin Kết quả là, dữ liệu tương tự chỉ được truyền qua 9 kết nối thay vì 20.

Hình 2.16: Kết nối 60 giây và 150 giây đồng bộ

JobScheduler cung cấp tính năng lặp lại công việc với khả năng lùi lại tuyến tính hoặc theo cấp số nhân Khi ứng dụng không hoạt động trong nền, tần suất nhận cập nhật có thể giảm, giúp tiết kiệm dữ liệu Khi ứng dụng được mở lại, dữ liệu vẫn mới mẻ cho người dùng với mức sử dụng dữ liệu thấp hơn JobScheduler có hai tùy chọn dự phòng: tuyến tính, cho phép tắt từ từ, và theo cấp số nhân, cho phép sao lưu nhanh hơn Dự phòng tuyến tính tính toán thời gian dự phòng bằng cách thêm thời gian dự phòng vào thời hạn hiện tại, trong khi thời gian lùi theo cấp số nhân sẽ nhân đôi thời gian lùi dự phòng.

Thời gian trễ tăng theo lũy thừa 2 giữa mỗi lần ping, với chênh lệch thời gian bắt đầu theo lịch trình là (20, 60, 120, 180, 325, 645) Dữ liệu ứng dụng của bạn đang được cập nhật cho khách hàng, nhưng với mức sử dụng mạng thấp hơn, giúp tiết kiệm pin hiệu quả.

Hình 2.17: Ảnh chụp màn hình của ứng dụng jobScheduler với dự phòng tuyến tính (trái) và theo cấp số nhân (phải)

Work Manager

At Google I/O 2018, Google introduced Android Jetpack, a collection of libraries, tools, and architectural templates designed to help developers build applications more easily and efficiently Among its components is the Architecture package, which includes LiveData, Room, and ViewModel, providing essential resources for modern app development.

Work Manager Work Manager là một thư viện được thiết kế cho việc lập lịch và quản lý các tác vụ ngầm.

Hiện nay, chúng ta đã có Job Scheduler API hỗ trợ lập lịch cho các tác vụ trong hệ điều hành Android Tuy nhiên, vẫn cần một thư viện bổ sung để đáp ứng một số yêu cầu cụ thể mà chúng tôi sẽ trình bày sau đây.

2.7.1 Easy to schedule (Dễ dàng lập lịch)

 Work Manager API giúp dễ dàng tạo các tác vụ không đồng bộ và cũng cho phép bạn chỉ định rõ ràng khi nào chúng nên thực thi.

Bạn có thể tạo một tác vụ và giao cho Work Manager thực hiện ngay lập tức hoặc khi thiết bị đáp ứng một số điều kiện nhất định.

Work Manager đảm bảo rằng tác vụ chỉ được thực hiện khi các điều kiện đã được xác định được thỏa mãn, ngay cả khi ứng dụng của bạn bị buộc dừng hoặc thiết bị khởi động lại.

2.7.2 Easy to cancel (Dễ dàng hủy bỏ)

Work Manager cung cấp UUID cho mỗi tác vụ, cho phép bạn hủy bỏ bất kỳ tác vụ nào vào bất kỳ thời điểm nào.

2.7.3 Easy to query (Dễ dàng truy vấn)

API Work Manager không chỉ cung cấp trạng thái hiện tại của tác vụ mà còn cho phép tác vụ trả về dữ liệu cụ thể dưới dạng key-value.

Work Manager sử dụng LiveData để cung cấp dữ liệu và trạng thái của công việc Activity của bạn có khả năng quan sát LiveData này và sẽ nhận thông báo khi tác vụ hoàn tất.

2.7.4 Support for all android version (Hỗ trợ tất cả các version của android)

 Work Manager hỗ trợ mọi device từ 14 trở lên

Work Manager lựa chọn phương pháp phù hợp để thực hiện tác vụ dựa trên các yếu tố như API của thiết bị và trạng thái của ứng dụng Khi ứng dụng đang chạy, Work Manager sẽ tạo một luồng mới để thực hiện tác vụ Ngược lại, nếu ứng dụng không hoạt động, Work Manager sẽ sử dụng JobScheduler API, Firebase Job Dispatcher hoặc Alarm Manager API để thực hiện các tác vụ đã được lên lịch.

Work Manager đáp ứng đầy đủ 4 trụ cột của ma trận lập lịch, ngoại trừ việc hỗ trợ tất cả các phiên bản Android Tuy nhiên, nó vẫn hỗ trợ nhiều phiên bản Android hơn so với JobScheduler.

NGHIÊN CỨU THỰC NGHIỆM

Battery Historian

Số liệu thống kê về pin cung cấp một kho dữ liệu phong phú, chứa thông tin chi tiết về cách thức thiết bị và các quy trình hoạt động sử dụng năng lượng từ pin.

Hình 3.1 mô tả quá trình làm việc với Battery Historian Để sử dụng công cụ này, người dùng có thể chọn giữa hai phương thức: sử dụng Docker, một nền tảng giúp xây dựng, triển khai và chạy ứng dụng dễ dàng hơn thông qua các container trên nền tảng ảo hóa, hoặc truy cập vào trang web do Google cung cấp tại https://bathist.ef.lc/ Tuy nhiên, hiện tại trang web này gặp lỗi 502 Server Error: Bad Gateway.

Khi sử dụng Docker, chạy trang web local trên, ta sử dụng câu lệnh: docker run -p port_number:9999 gcr.io/android-battery- historian/stable:3.0 port 9999

Với port_number do người dụng tuỳ chỉnh và truy cập http://192.168.99.100:

(port_number) Để thu thập dữ liệu từ thiết bị bằng Batterystats và mở nó trong Lịch sử pin, hãy làm như sau:

1.Kết nối thiết bị di động của bạn với máy tính bằng cáp USB.

2.Từ cửa sổ Terminal, hãy tắt máy chủ adb đang chạy: adb kill-server

3.Khởi động lại adb và kiểm tra các thiết bị được kết nối:

4.Đặt lại thu thập dữ liệu pin

Để khắc phục tình trạng không thấy thiết bị, hãy kiểm tra xem điện thoại của bạn đã được kết nối và bật chế độ USB Debugging chưa Nếu vẫn không thấy, hãy thử tắt và khởi động lại adb.

Thiết bị liên tục thu thập số liệu thống kê về pin và thông tin gỡ lỗi trong nền Việc đặt lại sẽ xóa dữ liệu thống kê pin cũ, và nếu không thực hiện reset, dữ liệu sẽ trở nên rất lớn Để reset thống kê pin, bạn có thể sử dụng câu lệnh: adb shell dumpsys batterystats reset.

5.Ngắt kết nối thiết bị khỏi máy tính để điện thoại chỉ lấy dòng điện từ pin của thiết bị.

Sử dụng điện thoại để thực hiện các hành động như ngắt kết nối WiFi, gửi dữ liệu lên đám mây, chơi game và xem video.

7.Kết nối lại điện thoại của bạn.

8.Đảm bảo rằng điện thoại của bạn được nhận dạng:

9.Kết xuất tất cả dữ liệu pin Điều này có thể mất một thời gian: adb shell dumpsys batterystats > [path/]batterystats.txt

10.Tạo báo cáo từ dữ liệu thô adb bugreport [path/]bugreport.zip

(đối với Android 7 trở lên và [path/] là địa chỉ thư mục người dùng chọn để lưu file trên)

Sau khi thu thập dữ liệu, hãy truy cập trang web https://bathist.ef.lc/ hoặc http://192.168.99.100:(port_number) để tải lên file bugreport.zip Một biểu đồ sẽ được tạo ra từ dữ liệu trạng thái pin của bạn Chúng ta sẽ tập trung phân tích Biểu đồ Historian V2, vì nó bao gồm các thông số của V1 và các thành phần quan trọng khác do lượng dữ liệu trích xuất rất lớn.

Biểu đồ hiển thị các thanh cho wakelocks, CPU, GPS, radio, và một trục mới bên phải với thanh màu xanh lam thể hiện mức tiêu hao pin Người dùng có thể chọn từng phân đoạn 1% của mức tiêu hao pin để xem số liệu thống kê trong khoảng thời gian đó Đường đồ thị đi xuống cho thấy mức tiêu hao pin, cho biết thiết bị tiêu hao pin nhanh hay chậm khi thực hiện các tác vụ Khi di chuột qua đường đồ thị, có thể thấy pin giảm từ 100% xuống 90% trong khoảng thời gian từ 4h45 đến 5h15 (10% trong 30 phút) khi chỉ sử dụng để nghe audio, một tác vụ nhẹ với ít tác vụ nền hoặc JobScheduler được thực thi.

Khi ta tắt nhạc và tắt cả màn hình, có thể thấy điện thoại đang ở Doze mode, pin hụt rất ít và không đáng kể:

Hình 3.3: Doze Mode Đến với một Batery report khác khi mà mức pin tụt khá nhanh khi sử dụng nhiều tác vụ:

Ngoài ra còn có nhiều JobScheduler thực thi bởi các ứng dụng:

JobScheduler ảnh hưởng đến thời lượng pin bằng cách thể hiện sự tương quan giữa số tác vụ thực thi và các tác vụ ngầm.

Xem dữ liệu dành riêng cho ứng dụng

Battery Historian không chỉ cung cấp dữ liệu tổng quát từ chế độ xem toàn hệ thống mà còn hiển thị các bảng và hình ảnh trực quan về dữ liệu cụ thể cho từng ứng dụng đang hoạt động trên thiết bị của bạn Dữ liệu dạng bảng này giúp người dùng dễ dàng theo dõi và phân tích hiệu suất của các ứng dụng.

 Mức sử dụng năng lượng ước tính của ứng dụng trên thiết bị.

Các bảng này cung cấp hai chiều dữ liệu về ứng dụng của bạn, cho phép bạn tra cứu xếp hạng mức sử dụng năng lượng so với các ứng dụng khác Để thực hiện điều này, hãy nhấp vào bảng Device Power Estimates trong phần Tables Ví dụ, thông tin về ứng dụng YouTube (Uid 10193) được trình bày rõ ràng.

Hình 3.6: Thông số sử dụng pin của các ứng dụng

Bảng này cho thấy Youtube là ứng dụng tiêu tốn 3,7% pin và xếp thứ 5 trong những ứng dụng sử dụng nhiều pin.

Khi lựa chọn một ứng dụng cụ thể, các danh mục trực quan hóa dữ liệu sẽ được điều chỉnh để hiển thị thông tin riêng biệt cho ứng dụng đó, thay vì dữ liệu toàn hệ thống.

SyncManager và JobScheduler giúp xác định xem ứng dụng của bạn có thực hiện đồng bộ hóa và công việc quá mức hay không Việc này mở ra cơ hội tối ưu hóa hành vi ứng dụng, từ đó cải thiện hiệu suất pin Bằng cách cô lập các chức năng tiêu hao pin, bạn có thể dễ dàng giải quyết vấn đề này.

Các trường hợp khác mà Battery Historian có thể trợ giúp:

Battery Historian có thể hỗ trợ chẩn đoán và cải thiện hiệu suất pin trong nhiều trường hợp khác nhau Chẳng hạn, nó có thể cung cấp thông tin về việc ứng dụng của bạn có tiêu tốn năng lượng hiệu quả hay không.

 Kích hoạt báo thức đánh thức quá thường xuyên (10 giây một lần hoặc ít hơn).

 Liên tục giữ khóa GPS.

 Lập lịch công việc sau mỗi 30 giây hoặc ít hơn.

 Lập lịch đồng bộ hóa sau mỗi 30 giây hoặc ít hơn.

 Sử dụng radio di động thường xuyên hơn bạn mong đợi.

JobScheduler

Bắt đầu với một giao diện đơn giản với 2 nút bấm là :

Nút bấm Start để bắt đầu 1 công việc chạy nền và Stop để kết thúc công việc đó

To create a new class, MyJobService, extend the JobService class to implement the onStartJob and onStopJob methods The package should be defined as `com.example.jobsc`, and necessary imports include JobParameters, JobService, Context, Log, and Toast In the MyJobService class, define a static final TAG for logging purposes and a boolean variable, jobCancelled, to manage job status.

@Override public boolean onStartJob(JobParameters jobParameters){

Log.e(TAG,"job started "); doBackgroundWork(jobParameters); return true;

} private void doBackgroundWork(JobParameters jobParameters){ new Thread(new Runnable() {

@Override public void run() { for(int i=0;i

Ngày đăng: 07/07/2023, 10:03

HÌNH ẢNH LIÊN QUAN

Hình 2.1: The KitKat (left) and Lollipop (right) Battery Menus - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.1 The KitKat (left) and Lollipop (right) Battery Menus (Trang 18)
Hình 2.2: KitKat (L) and Lollipop Battery Details - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.2 KitKat (L) and Lollipop Battery Details (Trang 19)
Hình 2.5: Chi tiết dữ liệu Facebook - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.5 Chi tiết dữ liệu Facebook (Trang 22)
Hình 2.6: Chi tiết dữ liệu Spotify Lollipop - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.6 Chi tiết dữ liệu Spotify Lollipop (Trang 23)
Hình 2.7: Chế độ xem hàng đầu về lịch sử pin Android Lollipop - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.7 Chế độ xem hàng đầu về lịch sử pin Android Lollipop (Trang 26)
Hình 2.8: Chế độ xem dưới cùng lịch sử pin Android Lollipop - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.8 Chế độ xem dưới cùng lịch sử pin Android Lollipop (Trang 29)
Hình 2.9: Tìm lỗi Wakelocks với Trình sử dụng pin - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.9 Tìm lỗi Wakelocks với Trình sử dụng pin (Trang 31)
Hình 2.11: Battery Historian 2.0 Aggregate Stats - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.11 Battery Historian 2.0 Aggregate Stats (Trang 33)
Hình 2.12: Battery Historian 2.0 Graph - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.12 Battery Historian 2.0 Graph (Trang 34)
Hình 2.13: Battery Historian 2.0 Battery Drain Detail - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.13 Battery Historian 2.0 Battery Drain Detail (Trang 35)
Hình 2.17: Ảnh chụp màn hình của ứng dụng jobScheduler với dự phòng tuyến tính (trái) và theo - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 2.17 Ảnh chụp màn hình của ứng dụng jobScheduler với dự phòng tuyến tính (trái) và theo (Trang 38)
Hình 3.1: Quá trình làm việc với Battery Historian - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 3.1 Quá trình làm việc với Battery Historian (Trang 41)
Hình 3.3: Doze Mode - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 3.3 Doze Mode (Trang 44)
Hình 3.4: Battery Report 2 - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 3.4 Battery Report 2 (Trang 45)
Hình 3.10: Demo Work Manager - Đề-Tài-12-_Tối-Ưu-Hiệu-Suất-Phần-Cứng-Và-Tuổi-Thọ-Pin.docx
Hình 3.10 Demo Work Manager (Trang 54)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w