Tải bản đầy đủ (.docx) (56 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.28 MB, 56 trang )

HỌC VIỆN KTMM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO HỌC PHẦN

TỐI ƯU PHẦN MỀM DI ĐỘNG
Đề tài:

TỐI ƯU HIỆU SUẤT PHẦN CỨNG VÀ TUỔI
THỌ PIN
Giảng viên hướng dẫn:
Sinh viên thực hiện:

TQH, NXL

Hà Nội, Tháng 10/2022


LỜI NĨI ĐẦU
Một trong những khía cạnh tuyệt vời nhất của cuộc cách mạng điện thoại thông minh
là khả năng khai thác kho kiến thức của nhân loại bằng một thiết bị nhỏ vừa vặn trong túi
của bạn. Các nhà phát triển ứng dụng ngày nay có sự lựa chọn giữa hầu hết hai nền tảng:
Android và iOS.
Android đã có những bước đi dài kể từ khi thiết bị đầu tiên dùng hệ điều hành này
xuất hiện, chiếc T-Mobile G1. Trong quãng thời gian ấy, chúng ta đã chứng kiến sự xuất
hiện của rất nhiều phiên bản Android, giúp nó dần biến đổi thành một nền tảng di động
mạnh mẽ như ngày hôm nay.
Ý tưởng thú vị là một khởi đầu tuyệt vời đối với một ứng dụng làm thỏa mãn người
dùng, nhưng đó mới chỉ là khởi đầu. Bước tiếp theo là tối đa hóa hiệu suất ứng dụng của
bạn. Người dùng mong muốn gì từ ứng dụng tốt nhất: sử dụng pin một cách tiết kiệm,


khởi động nhanh chóng, phản hồi nhanh với các tương tác của người dùng ...
Qua thời gian tìm hiểu thực tế để xác định đề tài, chúng em nhận được đề tài “Tối ưu
hiệu suất phần cứng và tuổi thọ pin” trên thiết bị di động là một trong những đề tài có tính
ứng dụng cao cung cấp những giải pháp tối ưu phần cứng và tuổi thọ pin 1 cách dễ hiểu
đẩy đủ và có hệ thống cho phép tối ưu hiệu suất phần cứng và tuổi thọ pin một các bài bản
và khoa học. Báo cáo đề tài gồm có 3 chương sau:
 Chương I: Tổng quan về đề tài 
 Chương II: Tối ưu hiệu suất phần cứng và tuổi thọ pin 
 Chương III: Nghiên cứu thực nghiệm
Để hoàn thành đề tài này, nhóm chúng em xin chân thành cảm ơn thầy giáo THS.LBC
đã hướng dẫn nhóm em hồn thành đề tài này. Trong quá trình thực hiện, tuy đã cố gắng
tìm hiểu và phân tích cài đặt nhưng cũng khơng tránh khỏi những sai sót. Nhóm em rất
mong nhận được sự thơng cảm và góp ý của q thầy cơ.
Nhóm em xin chân thành cảm ơn!

i


MỤC LỤC
LỜI NĨI ĐẦU...........................................................................................................i
MỤC LỤC

............................................................................................................ii

DANH MỤC HÌNH VẼ..........................................................................................iv
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI...............................................................1
1.1. Giới thiệu về Hệ điều hành Android...........................................................1
1.2. Tổng quan về hiệu suất................................................................................2
1.3. Hiệu suất trên android đối với người dùng................................................2
CHƯƠNG 2: TỐI ƯU HIỆU SUẤT PHẦN CỨNG VÀ TUỔI THỌ PIN..........4

2.1. Tính năng phần cứng trong android...........................................................4
2.2. Càng thu thập nhiều thơng tin thì càng ảnh hưởng hao pin.....................5
2.3. Nguyên nhân gây ra hao pin........................................................................5
2.3.1. Cấu hình nguồn android...................................................................................5
2.3.2. Màn hình..........................................................................................................7
2.3.3. Radios..............................................................................................................8
2.3.4. CPU.................................................................................................................9
2.3.5. Cảm biến bổ sung............................................................................................9
2.3.6. Chế độ ngủ!......................................................................................................9
2.3.7. Wakelocks và báo thức..................................................................................10
2.3.8. Framework Doze...........................................................................................10

2.4. Phân tích tiêu hao pin cơ bản....................................................................11
2.4.1. Ứng dụng tiêu hao pin cụ thể.........................................................................14
2.4.2. Kết hợp dữ liệu pin với dữ liệu sử dụng........................................................16
2.4.3. Chế độ chờ ứng dụng.....................................................................................18

2.5. Phân tích tiêu hao pin nâng cao................................................................18
2.5.1. Trạng thái pin.................................................................................................18
ii


2.5.2. Battery Historian............................................................................................19
2.5.3. Battery Historian 2.0......................................................................................26

2.6. JobScheduler và giải pháp khắc phục vấn đề tiêu hao pin với API
JobScheduler...............................................................................................29
2.6.1. Bối cảnh.........................................................................................................29
2.6.2. Job Scheduler.................................................................................................30
2.6.3. Áp dụng JobScheduler...................................................................................30


2.7. Work Manager............................................................................................32
2.7.1. Easy to schedule (Dễ dàng lập lịch)..............................................................33
2.7.2. Easy to cancel (Dễ dàng hủy bỏ)...................................................................33
2.7.3. Easy to query (Dễ dàng truy vấn)..................................................................33
2.7.4. Support for all android version (Hỗ trợ tất cả các version của android).......33

CHƯƠNG 3: NGHIÊN CỨU THỰC NGHIỆM.................................................35
3.1. Battery Historian........................................................................................35
3.2. JobScheduler...............................................................................................41
3.3. Work Manager............................................................................................45
KẾT LUẬN ...........................................................................................................50
TÀI LIỆU THAM KHẢO.....................................................................................51

iii


DANH MỤC HÌNH VẼ
Hình 1.1: Hệ điều hành android.............................................................................1
Hình 2.1: The KitKat (left) and Lollipop (right) Battery Menus......................12
Hình 2.2: KitKat (L) and Lollipop Battery Details.............................................13
Hình 2.3: Chi tiết về Pin của Facebook và Spotify..............................................14
Hình 2.4: Chi tiết về Pin Spotify trong KitKat và Lollipop...............................15
Hình 2.5: Chi tiết dữ liệu Facebook......................................................................16
Hình 2.6: Chi tiết dữ liệu Spotify Lollipop..........................................................17
Hình 2.7: Chế độ xem hàng đầu về lịch sử pin Android Lollipop.....................20
Hình 2.8: Chế độ xem dưới cùng lịch sử pin Android Lollipop.........................23
Hình 2.9: Tìm lỗi Wakelocks với Trình sử dụng pin..........................................25
Hình 2.10: Battery Historian 2.0 Header.............................................................26
Hình 2.11: Battery Historian 2.0 Aggregate Stats...............................................27

Hình 2.12: Battery Historian 2.0 Graph..............................................................28
Hình 2.13: Battery Historian 2.0 Battery Drain Detail.......................................29
Hình 2.14: Kết nối định kỳ 60 giây trong Bộ lập lịch cơng việc.........................30
Hình 2.15: Kết nối định kỳ 150 giây trong Bộ lập lịch cơng việc.......................31
Hình 2.16: Kết nối 60 giây và 150 giây đồng bộ..................................................31
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).........................................................32
Hình 3.1: Q trình làm việc với Battery Historian...........................................35
Hình 3.2: Biểu đồ Battery Historian.....................................................................37
Hình 3.3: Doze Mode..............................................................................................38
Hình 3.4: Battery Report 2....................................................................................39
Hình 3.5: JobScheduler trong khoảng thời gian.................................................39
iv


Hình 3.6: Thơng số sử dụng pin của các ứng dụng.............................................40
Hình 3.7: Giao diện demo......................................................................................42
Hình 3.8: Demo hoạt động của tiến trình.............................................................44
Hình 3.9: MyjobService trong Battery Historian................................................45
Hình 3.10: Demo Work Manager.........................................................................49

v


CHƯƠNG 1:
1.1.

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 được phát triển bởi Google (GOOGL), được sử dụng
chủ yếu trong các thiết bị màn hình cảm ứng, điện thoại di động và máy tính bảng. Nó cho
phép người dùng thao tác với các thiết bị một cách trực quan thông qua chuyển động của
ngón tay như: chạm, vuốt. Google cũng sử dụng phần mềm Android trên tivi, ô tô và
đồng hồ đeo tay - Mỗi thiết bị đều được thiết kế giao diện riêng.

Hình 1.1: Hệ điều hành android
Hệ điều hành này đầu tiên được Android.Inc. - một công ty phần mềm đặt tại Thung
lũng Silicon - phát triển, sau đó được Google mua lại vào năm 2005. Google đã công bố
thiết bị chạy Android đầu tiên của mình ra thị trường 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 để phát triển các ứng dụng dành
cho thiết bị di động, được bán trên các cửa hàng ứng dụng.
Tính đến tháng 1 năm 2020, Android là hệ điều hành phổ biến nhất được sử dụng trên
các thiết bị di động, với 74,3% thị phần toàn cầu. IOS của Apple đứng thứ hai với 24,8%.
Android chiếm 87,7% thị phần điện thoại thông minh trên toàn thế giới vào thời điểm
quý 2 năm 2017, với tổng cộng 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 của hệ điều hành cũng khiến nó trở thành mục tiêu trong các vụ
kiện liên quan đến bằng phát minh, góp mặt trong cái gọi là "cuộc chiến điện thoại thông
minh" giữa các công ty công nghệ.
1


Ưu, nhược điểm của hệ điều hành android:
 Ưu điểm:
o Kho ứng dụng đa dạng
o Mẫu mã đa dạng
o Có thể mở rộng bộ nhớ bằng thẻ nhớ
o Khả năng tùy biến cao có thể chỉnh sửa mà khơng có sự can thiệp hay cấm cản
từ Google

o Người dùng ưa chuộng nhiều

 Nhược điểm:
o Nhiều ứng dụng chạy ngầm làm chậm máy
o Một số ứng dụng chưa được tối ưu hóa tốt
o Chất lượng một số ứng dụng cịn kém
o Dễ bị virus xâm nhập

1.2.

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

Hiệu suất có thể có nhiều ý nghĩa đối với những người khác nhau. Khi nói đến ứng
dụng dành cho thiết bị di động, hiệu suất có thể mơ tả cách một ứng dụng hoạt động, hiệu
quả hoạt động của ứng dụng đó như thế nào hoặc liệu nó có gây nên sự thích thú với
người sử dụng hay khơng.

1.3.

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

Hiệu suất rất phức tạp bởi có hàng nghìn thiết bị khác nhau, tất cả đều có mức sức
mạnh tính tốn khác nhau. Đơi khi chỉ để ứng dụng chạy trên các thiết bị được nhắm mục
tiêu hàng đầu cũng giống như một thành tựu của riêng nó. Chúng ta sẽ xem xét hiệu suất
ứng dụng cụ thể về mặt quản lý năng lượng, hiệu quả và tốc độ.
Bên cạnh đó sẽ đề cập đến các vấn đề chính mà nhà phát triển ứng dụng dành cho thiết
bị di động gặp phải và khám phá các công cụ sẽ giúp chúng ta xác định và xác định các
vấn đề về hiệu suất thường thấy trong tất cả các ứng dụng dành cho thiết bị 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 ngày càng có dung lượng lớn: Hầu hết các bản cập
nhật của Android đều chiếm dung lượng lẫn tài nguyên ngày càng lớn. Với những
bản nâng cấp chừng 1-2 năm sau khi bạn mua máy thì khơng vấn đề gì do nhà sản
xuất vẫn quan tâm đến thiết bị của bạn và cố gắng tối ưu, nhưng các bản cập nhật
sau 3-4 năm sẽ bắt đầu tồn tại những suy giảm về hiệu năng.
2


 Các ứng dụng mở rộng và dùng nhiều tài nguyên hơn: Những ứng dụng được đăng
lên Play Store càng lúc càng nhiều hơn, chúng cũng tiêu thụ một lượng lớn tài
nguyên hệ thống hơn do được bổ sung các chức năng mới càng lúc càng nhiều…
 Ứng dụng chạy nền nhiều: Mặc dù bạn đã đóng ứng dụng nhưng nó vẫn âm thầm
chạy ngầm, update, download thơng tin cũng làm cho thiết bị Android của bạn
ngày càng chậm.
 Phần cứng lỗi thời : Mỗi thiết bị Android sẽ có một vịng đời nhất định, nếu vượt
q ngưỡng đó khả năng hoạt động sẽ giảm đi. Ví dụ như khi các ô nhớ gặp vấn
đề, hệ điều hành trên thiết bị của bạn sẽ phải chuyển sang lưu hoặc đọc dữ liệu ở
một ô khác nên sẽ mất thời gian hơn, vơ tình làm app của bạn ít nhạy hơn, chờ load
lâu hơn một chút. Hay đó là bộ nhớ máy khơng đủ lớn thì các file này sẽ tạm
khơng có chỗ chứa nên tiến trình chờ xử lý sẽ lâu hơn.
 Sự ổn định của mạng: Với sự phát triển tiên tiến như hiện nay, việc kết nối giữa
các thiết bị với nhau thông qua đường truyền mạng là vô cùng thiết yếu, bất kể một
sự cố mạng nhỏ nào cũng làm gián đoạn chuỗi kết nối này. Hiệu suất mạng không
ổn định hoặc thấp dẫn đến trải nghiệm người dùng vô cùng tệ, kéo theo ứng dụng
trên thiết bị android khơng hoạt động tốt nhất có thể.
Điều quan trọng trong phát triển ứng dụng dành cho thiết bị di động là đo lường được
hiệu suất phần cứng và tuổi thọ pin.
Và trong đề tài này chúng ta sẽ cùng nhau tìm hiểu về cách tối ưu hóa hiệu suất giao
diện người dùng để hiển thị và các công cụ để lập cấu hình hiệu suất phần cứng và tuổi
thọ pin.


3


CHƯƠNG 2:

2.1.

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:
1. Máy quét vân tay
2. Máy đo nhịp tim
3. Màn hình ánh sáng
4. Độ ẩm tương đối
5. Nhiệt độ môi trường
6. Áp kế
7. NFC (Near-Field Communications)
8. Con quay hồi chuyển
9. Gia tốc kế
10. Bluetooth
11. Wi-Fi
12. Đài FM
13. Đài phát thanh di động
14. Camera trước và sau
15. GPS
16. Từ trường

17. Thông lượng ánh sáng
18. Nhiệt độ pin
19. Micrô
20. Cảm ứng
Cách đơn giản nhất để chúng ta nhanh chóng hiểu được các khía cạnh hiệu suất của tất
cả các cảm biến này là xem xét sự tiêu hao điện năng. Các bộ phận của thiết bị tiêu thụ
nhiều nguồn điện nhất cũng là những thứ chúng ta cần phải cẩn thận nhất.
4


2.2.

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

Bằng cách sử dụng các tính năng tuyệt vời này trên thiết bị Android của khách hàng,
chúng ta muốn thu thập được nhiều thơng tin nhất có thể và cung cấp thơng tin đó cho
khách hàng của mình. Thách thức là nếu chúng ta thu thập quá nhiều dữ liệu, chúng ta sẽ
ảnh hưởng đến tuổi thọ pin của thiết bị và vì vậy chúng ta phải tìm ra điểm cân bằng
chính xác của dữ liệu / thơng tin có thể chấp nhận được với mức tiêu thụ điện năng. Hơn
nữa, nếu chúng ta có thể đảm bảo rằng tất cả các tác vụ chạy nhanh nhất có thể, chúng ta
có thể chắc chắn rằng con lắc hiệu suất / pin đang thay đổi theo hướng có lợi cho chúng
ta.
Google đã báo cáo rằng 1 giây sử dụng thiết bị hoạt động bằng với mức tiêu hao năng
lượng của 2 phút thời gian chờ. Điều này có ý nghĩa đối với bất kỳ ai đã xem xét thông số
kỹ thuật của thiết bị. Nexus 5 có thời gian chờ 300 giờ (12,5 ngày) (nghĩa là bật LTE và
bật Wi-Fi, nhưng không sử dụng thiết bị.) Ngay sau khi khách hàng bắt đầu cài đặt ứng
dụng (hoặc bật màn hình để kiểm tra các ứng dụng đã nêu), thời lượng pin giảm xuống 35
lần! (Nexus 5 hứa hẹn thời lượng pin 8,5 giờ khi sử dụng Wi-Fi thơng thường.) Nhìn vào
bức tranh lớn hơn, chúng ta có thể giả định rằng 5 phút sử dụng ứng dụng hoạt động sẽ
tiêu tốn 1% –1,6% pin. Ứng dụng của bạn càng sử dụng nhiều thứ, con số này càng cao.

Điều này thể hiện rõ nhất trên các trị chơi Android thơng thường miễn phí (có hỗ trợ
quảng cáo), sau khi chơi các trò chơi này trong 10–15 phút, bạn phát hiện ra rằng mặt sau
của điện thoại nóng khi chạm vào. Các ứng dụng này có thể tải xuống mạnh mẽ quảng
cáo trong khi trị chơi đang sử dụng CPU, màn hình, v.v. Tất cả các thành phần này hoạt
động cùng một lúc sẽ tiêu hao pin nhanh đến mức nóng lên. Một nghiên cứu được công
bố vào tháng 3 năm 2015 cho thấy rằng 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 cùng một ứng dụng có
quảng cáo bị loại bỏ.
Hầu hết các vấn đề về pin với thiết bị di động không liên quan đến phần cứng mà là do
các ứng dụng được thiết kế kém, lạm dụng khả năng của thiết bị. Trong chương này,
chúng ta sẽ tìm hiểu một số bước sử dụng phần cứng sai và cách tránh chúng trong ứng
dụng Android.

2.3.

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

2.3.1. Cấu hình nguồn android
Menu cài đặt pin báo cáo phần trăm của hao pin cho từng ứng dụng đang chạy trên
thiết bị. Các tính tốn tiêu hao năng lượng này được tạo (một phần) bởi cấu hình Android
Power. Bên trong hệ điều hành Android là một tệp xml cho hệ thống biết dòng điện do
5


các thành phần phần cứng chính của thiết bị của bạn. Khi ứng dụng của bạn chạy (và đánh
thức các phần khác nhau của thiết bị),hệ thống tính tốn lượng điện năng mà mỗi thành
phần sử dụng, và gán cho sự tiêu hao điện cho các quy trình của bạn. Tệp XML trông
giống như sau:
Power Profile XML:
<?xml version="1.0" encoding="utf-8"?>

<device name="Android">
<item name="none">0</item>
<item name="screen.on">65</item>
<item name="screen.full">202</item>
<item name="bluetooth.active">87</item>
<item name="bluetooth.on">1</item>
<item name="wifi.on">3</item>
<item name="wifi.active">240</item>
<item name="wifi.scan">129</item>
<item name="dsp.audio">29</item>
<item name="dsp.video">215</item>
<item name="radio.active">125</item>
<item name="radio.scanning">25</item>
<item name="gps.on">1</item>
<array name="radio.on">
<value>4.5</value>
<value>4.5</value>
</array>
<array name="cpu.speeds">
<value>2457600</value>
<value>2265600</value>
<value>1958400</value>
<value>1728000</value>
<value>1574400</value>
<value>1497600</value>
<value>1267200</value>
<value>1190400</value>
<value>1036800</value>
<value>960000</value>
<value>883200</value>

<value>729600</value>
<value>652800</value>
<value>422400</value>

6


<value>300000</value>
</array>
<item name="cpu.idle">3.1</item>
<array name="cpu.active">
<value>348</value>
<value>313</value>
<value>265</value>
<value>232</value>
<value>213</value>
<value>203</value>
<value>176</value>
<value>132</value>
<value>122</value>
<value>114</value>
<value>97</value>
<value>92</value>
<value>84</value>
<value>74</value>
<value>56</value>
</array>
<item name="battery.capacity">2800</item>
<array name="wifi.batchedscan">
<value>.0002</value>

<value>.002</value>
<value>.02</value>
<value>.2</value>
<value>2</value>
</array>
</device>

Phần cứng có mức tiêu hao năng lượng cao nhất trên các thiết bị di động ngày nay là
màn hình, radio (di động, Wi-Fi, Bluetooth và GPS) và CPU (ở mức cao tỷ lệ xử lý). Khi
chúng tơi tìm cách tối ưu hóa hiệu suất ứng dụng, các thành phần tương tự ảnh hưởng đến
hiệu suất cũng ảnh hưởng đến việc hao pin của thiết bị. Vì vậy, bằng cách tối ưu hóa hiệu
suất ứng dụng của bạn, bạn cũng sẽ cải thiện tuổi thọ pin của thiết bị của người dùng.
2.3.2. Màn hình
Màn hình là một trong những nguyên nhân hàng đầu gây tiêu hao pin (khi độ sáng
màn hình ở mức cao, mức tiêu hao hiện tại sẽ tiếp cận với screen full trong cấu hình
nguồn). Vì màn hình là yếu tố giao diện người dùng thiết yếu của ứng dụng Android của
7


bạn và nó thường cần duy trì sáng trong khi ứng dụng của bạn đang chạy. Tuy nhiên, có
một số khía cạnh giao diện bạn có thể sử dụng để hạn chế việc tiêu hao pin do sử dụng
màn hình.
Nhìn chung, có 2 loại màn hình chính trong các thiết bị Android là LED (Light
EmittingDiode) và LCD (Liquid Crystal Display). Các nhà sản xuất có các phiên bản độc
quyền của những màn hình này (ví dụ: AMOLED - LED hữu cơ ma trận hoạt động hoặc
Super LCD3), và chúng sẽ có các khía cạnh khác nhau về chế độ xem và cơng suất. Tuy
nhiên, ở mức độ phân tích cao nhìn vào đây, chúng ta có thể chỉ có hai loại màn hình.
2.3.2.1. LCD
Màn hình LCD (nói một cách dễ hiểu) bao gồm hàng nghìn tinh thể lỏng tạo ra màu
sắc cho mỗi pixel và đèn nền chiếu sáng tất cả chúng cùng một lúc. Tạo màu cho mỗi

pixel sẽ tốn ít năng lượng nhất. Chi phí năng lượng chính cho loại màn hình này là ánh
sáng chiếu qua các tinh thể lỏng. Điều này có nghĩa là nói chung, mỗi pixel tiêu tốn một
lượng năng lượng như nhau, bất kể màu sắc đượ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.
Có rất ít lợi ích cho nền đen trong màn hình LCD, nhưng sức mạnh tiềm năng từ màn
hình LED đủ lớn để xem xét nền tối cho màn hình mở trong thời gian dài.
2.3.3. Radios
Như với cấu hình XML cho thấy, radio di động và wifi sử dụng một lượng pin bằng
nhau. Nói chung các kết nối di động được duy trì trong một thời gian dài hơn so với wifi,
khiến các phiên radio di động lâu hơn và cuối cùng sử dụng nhiều pin hơn kết nối được
thực hiện trên wifi. Ở cấp độ cao cách tốt nhất để cải thiện việc sử dụng radio cho ứng
8


dụng của bạn là tải xuống nhiều nhất có thể cùng một lúc và tắt radio khi bạn hoàn tất.
Điều này sẽ cải thiện gấp 2 lần đối với hiệu suất. Bằng cách giảm số lượng u cầu, màn
hình có thể tải nhanh hơn và bạn giảm mức tiêu hao pin.
Một cảm biến khác là GPS. Khi sử dụng vị trí, biết được độ chính xác của vị trí bạn
cần có thể tiết kiệm rất nhiều thời gian (và điện năng). Bằng cách tránh sử dụng GPS, ứng

dụng của bạn sẽ nhanh hơn (vị trí có sẵn trên thiết bị) và sẽ sử dụng ít năng lượng hơn.
2.3.4. CPU
Nếu ứng dụng của bạn là một trị chơi hoặc có nhiều tính tốn nặng, bạn biết rằng bạn
sẽ xử lý mạnh CPU. Ngoài ra, nếu ứng dụng của bạn yêu cầu tính tốn nền để thực hiện,
CPU có thể được sử dụng để thực hiện các tính tốn bổ sung. Như cấu hình nguồn XML
hiển thị, CPU chạy càng cao thì mức tiêu hao pin càng cao. Việc sử dụng CPU bị ảnh
hưởng bởi màn hình, mạng và tất cả các phép tính diễn ra trong thiết bị của bạn.
2.3.5. Cảm biến bổ sung
Như chúng ta đã thảo luận trong Chương 1, điện thoại của chúng ta có nhiều cảm biến
bổ sung cho phép các nhà phát triển làm cho các ứng dụng thật sự hữu ích.
Khi sử dụng cảm biến, bạn có thể dùng phương thức getPower () để lấy năng lượng
của cảm biến. Một số ứng dụng miễn phí trong Google Play liệt kê tất cả các cảm biến
trên thiết bị và mức sử dụng hiện tại của chúng (tính bằng miliampe).
Mỗi cảm biến có thể báo cáo các sự kiện lên đến một tần số tối đa nhất định. Là một
nhà phát triển, điều quan trọng là sử dụng tỷ lệ mẫu có ý nghĩa đối với ứng dụng của bạn.
Ngoài cảm biến, CPU và bộ nhớ của thiết bị được sử dụng để xử lý dữ liệu và lấy mẫu
quá mức các tài nguyên đã được kiểm tra.
Cuối cùng, khi bạn sử dụng xong cảm biến, hãy đảm bảo rằng bạn đã hủy đăng ký
cảm biến. Nếu bạn giữ cho trình theo dõi của mình hoạt động, các cảm biến sẽ tiếp tục
báo cáo dữ liệu và điều này sẽ dẫn đến tải bộ xử lý không cần thiết, sử dụng bộ nhớ và
tiêu hao pin.

9


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.
2.3.7. Wakelocks và báo thức
Trong lịch sử, các nhà phát triển đã sử dụng wakelocks và báo thức để đánh thức một
thiết bị xử lý thơng tin. Vì có khả năng bạn muốn ứng dụng của mình đánh thức và xử lý
một số dữ liệu mà không cần sự tương tác của khách hàng.
Wakelocks cũng có thể được sử dụng để ngăn thiết bị chuyển sang chế độ ngủ. Bây
giờ chúng ta đã xem xét mức năng lượng mà mỗi phần cứng của Android sử dụng, bạn sẽ
bắt đầu thấy việc đánh thức thiết bị trong nền có thể gây bất lợi như thế nào đối với hiệu
suất pin của ứng dụng và thiết bị của bạn. Ngoài ra, khi ứng dụng của bạn đánh thức một
thiết bị, nó sẽ mở ra cánh cửa cho các ứng dụng khác xử lý sự kiện, có thể là bật radio, ...
2.3.7.1. Wakelocks
Wakelocks cung cấp cho bạn khả năng đánh thức (hoặc giữ luôn hoạt động) các bộ
phận của thiết bị di động. Đây là một tính năng quan trọng trong các ứng dụng khi được
sử dụng đúng cách.
Khóa màn hình là cách các ứng dụng xem phim giữ cho màn hình khơng bị hết thời
gian trong khi xem phim hoặc ứng dụng phát nhạc trực tuyến giữ cho kênh âm thanh phát
trong khi phần còn lại của thiết bị ở chế độ ngủ. Trong các loại ứng dụng chắc chắn, các
wakelock này là tối quan trọng đối với trải nghiệm người dùng. Tuy nhiên, nếu không
được xử lý đúng cách, wakelocks cũng có thể gây tiêu hao pin nghiêm trọng.
2.3.7.2. Báo thức
Báo thức cho phép bạn đặt thời gian mà các hoạt động cụ thể sẽ được chạy. Các ứng
dụng này thường chạy khi ứng dụng của bạn không ở chế độ nền và thường khi thiết bị ở
chế độ ngủ.
Khi sử dụng báo thức, bạn chỉ nên gọi một báo thức chính xác nếu bạn cần báo thức
vào một thời điểm chính xác. Nếu khơng, bạn có thể sử dụng báo thức aninexact trong đó
HĐH sẽ điều phối tất cả các báo thức để giảm thiểu việc tiêu hao pin.
10



2.3.8. Framework Doze
Như chúng ta đã thấy trong chương này, thiết bị càng được đánh thức, pin càng nhanh
hết. Khi thiết bị khơng hoạt động, các khóa và chng báo mà mỗi thiết bị sử dụng sẽ tích
tụ cống. Các nghiên cứu đã chỉ ra rằng 70% lượng pin tiêu hao khi thiết bị không hoạt
động là do các ứng dụng đang bật kết nối vô tuyến để cập nhật.
Trong bản phát hành Android M sắp tới, Google đã thêm khung Doze để hạn chế tần
suất thiết bị có thể thức dậy. Điều này đi kèm với cái giá phải trả là "làm mới dữ liệu"
trong các ứng dụng, nhưng có dữ liệu mới trong ứng dụng của bạn chẳng có nghĩa gì nếu
pin hết. Thiết bị cho phép cập nhật một số cửa sổ nhất định (và tất nhiên khi màn hình
thiết bị được bật, tất cả các ứng dụng đều có thể cập nhật.)
Là nhà phát triển, bạn nên kiểm tra ứng dụng của mình với khung Doze để đảm bảo
rằng nếu có nhiều thơng báo xảy ra trong khi thiết bị đang Dozing thì chỉ có một thơng
báo / âm báo cảnh báo được thực hiện.

2.4.

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

Chúng tôi đã đề cập đến cách phần cứng sử dụng pin như thế nào Android tính tốn
mức tiêu hao pin của ứng dụng từ các giá trị này và việc đánh thức ứng dụng của bạn
khơng hiệu quả có thể gây tiêu hao pin lớn như thế nào. Nếu các ứng dụng là nguyên nhân
gây hao pin, làm cách nào bạn có thể xác định được đâu là nguyên nhân gây hao pin hàng
đầu trên thiết bị của mình? Menu cài đặt pin có rất nhiều thơng tin để chẩn đốn các vấn
đề tiêu hao pin bắt nguồn từ các ứng dụng dành cho thiết bị di động và quan trọng hơn, tất
cả người dùng Android đều có thể truy cập được.
Khi ban đầu bạn mở menu Pin (Cài đặt → Pin), bạn có thể thấy biểu đồ tổng quát về
mức tiêu hao pin theo thời gian (thường là kể từ lần sạc 100% gần đây nhất). Dưới biểu
đồ là danh sách tất cả các ứng dụng đã góp phần gây tiêu hao pin trong trải nghiệm đã
chọn.


11


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

Bạn sẽ thấy rằng menu đã được cập nhật giữa Kitkat và Lollipop. Menu Kitkat hiển thị
mức sử dụng pin hiện tại, trong khi Lollipop hiển thị cả mức sử dụng và dự đốn thêm
thời lượng pin cịn lại cho đến khi bạn phải sạc lại (dựa trên mức sử dụng của bạn). Bằng
cách chạm vào biểu đồ ở trên cùng, biểu đồ sẽ mở rộng và hiển thị thêm chi tiết cụ thể của
thiết bị về những gì thiết bị đã làm.

12


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

Menu mở rộng này cho bạn biết lượng thời gian thiết bị của bạn đã sử dụng ở các tần
số di động khác nhau (xanh lục/vàng/đỏ cho biết chất lượng tín hiệu), thời gian bật Wi-Fi
hoạt động, thời gian hoạt động của thiết bị, đánh thức màn hình và thời gian thiết bị đang
sạc. Với tư cách là người dùng, hãy ưu tiên chế độ xem Lollipop, vì nó hiển thị cả dữ liệu
thực tế về pin (màu xanh lục), nhưng dự đoán thời gian cịn lại (màu xám).
Trong hình ảnh KitKat, bạn có thể thấy tình trạng xả pin nhanh chóng (ở bên trái màn
hình) xảy ra trong khoảng thời gian tín hiệu kém, trong khi màn hình đang sáng và điện
thoại bị ngắt. Có một sự sụt giảm tương tự trên thiết bị Lollipop ngay trước khi ảnh chụp
màn hình được chụp (trong đó biểu đồ chuyển từ màu xanh lục sang màu xám.)
Với tư cách là nhà phát triển (và với tư cách là người dùng), một chỉ báo quan trọng về
cảnh báo tiêu hao pin do ứng dụng gây ra là khi thiết bị ở chế độ thức nhưng màn hình tắt.
Đây là chỉ báo của một thiết bị sử dụng khóa hoặc chng báo để sử dụng thiết bị trong
khi bạn (khách hàng) không sử dụng thiết bị đó. Nếu bạn thấy điều này xảy ra thường
xuyên, bạn có thể xem các ứng dụng gây ra tình trạng cạn pin và xác định (các) ứng dụng

nào đang gây ra sự cố.
13


2.4.1. Ứng dụng tiêu hao pin cụ thể
Nếu bạn quay lại màn hình menu chính của pin và cuộn xuống bên dưới dữ liệu biểu
đồ pin, sẽ có sự cố của mọi ứng dụng liên quan đến việc tiêu hao pin. Bằng cách chọn một
ứng dụng cụ thể từ menu, Bạn sẽ thấy mức sử dụng CPU của ứng dụng của bạn ở
foreground và toàn bộ. Ngoài ra, menu này cung cấp mức sử dụng dữ liệu (foreground/
background cellular/ Wi-Fi), và thời gian ứng dụng giữ cho thiết bị của bạn ở chế độ thức.
Dữ liệu và mức sử dụng ứng dụng nền rất tuyệt vời, nhưng lượng sử dụng nền lớn ngụ ý
rằng ứng dụng của bạn có thể đang làm thiết bị hoạt động từ 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 quan điểm này, Facebook đang được ghi nhận là nguyên nhân gây ra 4% mức
tiêu hao pin (được tính tốn với “Android Power Profile” ở trang 27) trên thiết bị. Việc
sử dụng CPU của Facebook chủ yếu là ở foreground (gần 11 phút trong tổng số 11,5
phút). Thêm 30 giây sử dụng CPU ở chế độ nền và có thể liên quan đến việc tải các bản
cập nhật từ máy chủ xuống. Ứng dụng giữ cho điện thoại hoạt động trong 1 phút với khóa
màn hình. Điều này là do đã xem một video dài 1 phút trên nguồn cấp dữ liệu tin tức của
mình và wakelock đã giữ cho màn hình khơng tắt. Facebook đã khơng sử dụng một lượng
14



×