- Forum-Beiträge: 5.136
23.09.2009, 10:51:16 via Website
23.09.2009 10:51:16 via Website
Weil die Batterie Thematik scheinbar immer noch sehr auf Interesse stößt hab ich mich heute Morgen einmal ein wenig näher mit dem Bugreport des Android beschäftigt, aus dem zu diesem Thema sehr viel herauszulesen ist.
Um das anschaulich erklären zu können, habe ich heute einen aktuellen Bugreport erstellt, aus dem ich später einige Auszüge zeigen werde.
Der Bugreport eines Android Handys kann mit dem ADB Tool erstellt werden, dass Bestandteil des Android SDK ist. Bei installiertem SDK und vorhandenem SystemPfad auf das SDK/Tools Verzeichnis sowie per USB an den PC angeschlossenem Handy gibt man folgenden Befehl auf der CMD (Commandline/DOS-Box...) ein:
adb bugreport > bugreport.txt
Nun befindet sich in dem aktuellen Verzeichnis (in dem die CMD gestartet wurde) eine Datei namens bugreport.txt die man mit einem beliebiegen Texteditor öffnen kann.
Vorab jedoch einige Punkte um Missverständnisse zu vermeiden:
- Bugreports können auf anderen Handymodellen ggf. anders aussehen
- Was ich hier beschreibe ist nicht gesichert, da der Bugreport nicht dokumentiert ist, ich interpretiere nur mit meinem vorhandenen Wissen
- Man sollte keine Apps verteufeln aufgrund der Ergebnisse (dazu später mehr)
Der Bugreport enthält extrem viel Informationen zu den internen Abläufen in unseren geliebten Androids
Diese Informationen sind sehr technisch und basieren darüber hinaus auf Dingen die das Linux Betriebsystem des Android vorgibt und verwaltet.
Bis auf wenige Ausnahmen, ist mir zur Zeit kein anderer Weg bekannt um an derart detailierte Informationen aus dem Handy heranzukommen. Die meisten diese hier zu findenden Informationen verlangen Aufrufe von intern gehaltenen APIs an die auf normalem Weg (ohne Root und sonstige Kniffe) nicht heranzukommen ist.
Zur Sache:
Hat man den Bugreport wie oben beschrieben erstellt, öffnet man das bugreport.txt File und sucht im Text nach fogendem String: "Unplugged Statistics"
Hinter diesem Abschnitts Bezeichner werden die Vorgänge seit Beendigung des letzten Ladevorgangs (Also dem abziehen vom Ladegerät oder trennen der USB Verbindung zum PC) sehr detailgetreu dargestellt. Insbesondere in Hinblick auf die Vorgänge der einzelnen Applikationen und deren Auswirkung auf die Batterieressourcen.
Folgender Auszug aus dem Bugreport:
2
3 Time on battery: 7h 24m 9s 124ms (88.7%) realtime, 18m 49s 325ms (3.8%) uptime
4
5 Total run time: 8h 20m 52s 569ms realtime, 1h 15m 32s 770ms uptime,
6
7 Screen on: 2m 8s 269ms (0.5%), Input events: 156, Active phone call: 0ms (0.0%)
8
9 Screen brightnesses: dark 7s 373ms (5.7%), medium 2m 0s 897ms (94.3%)
10
11 Total received: 60.41KB, Total sent: 91.52KB
12
13 Total full wakelock time: 1s 759ms , Total partial waklock time: 15m 4s 397ms
14
15 Signal levels: good 471ms (0.0%) 2x, great 7h 24m 8s 653ms (100.0%) 0x
16
17 Radio types: none 17m 12s 68ms (3.9%) 2x, umts 7h 6m 57s 56ms (96.1%) 2x
18
19 Wifi on: 7h 24m 9s 124ms (100.0%), Wifi running: 23m 26s 582ms (5.3%), Bluetooth on: 7h 24m 9s 124ms (100.0%)
20
21
22
23 Device is currently plugged into power
24
25 Last discharge cycle start level: 100
26
27 Last discharge cycle end level: 97
28
29
30
31 #1000:
32
33 Network: 32.65KB received, 65.15KB sent
34
35 User activity: 4 other, 30 long_touch, 24 touch_up
36
37 Turned Wifi On Time: 0ms (0.0%)
38
39 Full Wifi Lock Time: 0ms (0.0%)
40
41 Scan Wifi Lock Time: 5m 35s 631ms (1.3%)
42
43 Wake lock WifiService: 5m 54s 640ms partial (51 times) realtime
44
45 Wake lock ActivityManager-Launch: (nothing executed)
46
47 Wake lock PreventScreenOn Partial: (nothing executed)
48
49 Wake lock StayOnWhilePluggedIn Partial: 188ms partial (1 times) realtime
50
51 Wake lock keyguard: 1s 390ms full (1 times) realtime
52
53 Wake lock CheckinService: 9s 710ms partial (1 times) realtime
54
55 Wake lock ActivityManager-Sleep: 47ms partial (1 times) realtime
56
57 Wake lock NotificationService: 319ms partial (1 times) realtime
58
59 Wake lock SyncManagerHandleSyncAlarmWakeLock: 398ms partial (1 times) realtime
60
61 Wake lock HardwareService: 325ms partial (1 times) realtime
62
63 Wake lock StayOnWhilePluggedIn Screen Dim: 369ms full (1 times) realtime
64
65 Wake lock window: (nothing executed)
66
67 Wake lock keyguardWakeAndHandOff: 5ms partial (1 times) realtime
68
69 Wake lock SCREEN_FROZEN: (nothing executed)
70
71 Wake lock sleep_broadcast: 360ms partial (3 times) realtime
72
73 Wake lock SyncManagerSyncWakeLock: 6s 385ms partial (1 times) realtime
74
75 Wake lock AlarmManager: 14s 60ms partial (170 times) realtime
76
77 Wake lock LocationManagerService: 4m 27s 528ms partial (48 times) realtime
78
79 Wake lock UpdateVerifier: (nothing executed)
80
81 Sensor 0: 2m 8s 309ms realtime (1 times)
82
83 Proc system:
84
85 CPU: 1m 49s 840ms user + 21s 660ms kernel
86
87 0 process starts
88
89 Apk com.android.providers.subscribedfeeds:
90
91 Service com.android.providers.subscribedfeeds.SubscribedFeedsIntentService:
92
93 Created for: 187ms uptime
94
95 Starts: 1, launches: 1
96
97 Apk com.google.android.server.checkin:
98
99 1 wakeup alarms
100
101 Service com.google.android.server.checkin.CheckinService:
102
103 Created for: 18m 49s 325ms uptime
104
105 Starts: 0, launches: 0
106
107 Apk android:
108
109 51 wakeup alarms
110
111 #1001:
112
113 Network: 8.33KB received, 10.33KB sent
114
115 Wake lock SMSDispatcher: (nothing executed)
116
117 Wake lock window: (nothing executed)
118
119 Wake lock GSM: (nothing executed)
120
121 Wake lock ScoSocket: (nothing executed)
122
123 Wake lock PhoneApp: (nothing executed)
124
125 Wake lock HeadsetBase: (nothing executed)
126
127 Wake lock RILJ: 8s 28ms partial (109 times) realtime
128
129 Wake lock BT HS/HF:StartCall: (nothing executed)
130
131 Proc com.android.phone:
132
133 CPU: 1s 160ms user + 840ms kernel
134
135 0 process starts
136
137 Apk com.android.phone:
138
139 Service com.android.phone.BluetoothHeadsetService:
140
141 Created for: 18m 49s 325ms uptime
142
143 Starts: 0, launches: 0
144
145 Apk com.android.stk:
146
147 Service com.android.stk.StkAppService:
148
149 Created for: 18m 49s 325ms uptime
150
151 Starts: 0, launches: 0
152
153 #10000:
154
155 Wake lock window: (nothing executed)
156
157 Wake lock Browser: (nothing executed)
158
159 #10001:
160
161 Wake lock window: (nothing executed)
162
163 Wake lock AlarmClock: (nothing executed)
164
165 Apk com.android.alarmclock:
166
167 (nothing executed)
168
169 #10002:
170
171 (nothing executed)
172
173 #10003:
174
175 Wake lock window: (nothing executed)
176
177 Apk com.voss.nostalk:
178
179 Service com.voss.nostalk.CallListener:
180
181 Created for: 0ms uptime
182
183 Starts: 1, launches: 1
184
185 #10004:
186
187 Wake lock window: (nothing executed)
188
189 Wake lock CalendarAppWidgetProvider: (nothing executed)
190
191 Wake lock StartingAlertService: (nothing executed)
192
193 Apk com.android.providers.calendar:
194
195 (nothing executed)
196
197 Apk com.android.calendar:
198
199 (nothing executed)
200
201 #10005:
202
203 Wake lock window: (nothing executed)
204
205 Proc android.process.acore:
206
207 CPU: 600ms user + 350ms kernel
208
209 0 process starts
210
211 Proc com.android.inputmethod.latin:
212
213 CPU: 30ms user + 60ms kernel
214
215 0 process starts
216
217 Apk com.android.inputmethod.latin:
218
219 (nothing executed)
220
221 #10006:
222
223 Wake lock window: (nothing executed)
224
225 Wake lock DownloadManager: (nothing executed)
226
227 Wake lock MediaScannerService: (nothing executed)
228
229 Wake lock ImageGallery2.checkThumbnails: (nothing executed)
230
231 Sensor GPS: (not used)
232
233 Sensor 0: (not used)
234
235 Proc android.process.media:
236
237 CPU: 1s 30ms user + 100ms kernel
238
239 1 process starts
240
241 Apk com.android.providers.downloads:
242
243 Service com.android.providers.downloads.DownloadService:
244
245 Created for: 1s 87ms uptime
246
247 Starts: 2, launches: 2
248
249 Apk com.android.providers.media:
250
251 (nothing executed)
252
253 #10007:
254
255 Wake lock window: (nothing executed)
256
257 Apk com.android.email:
258
259 (nothing executed)
260
261 #10008:
262
263 Wake lock window: (nothing executed)
264
265 Proc com.google.android.gm:
266
267 CPU: 0ms user + 0ms kernel
268
269 1 process starts
270
271 #10009:
272
273 Network: 11.03KB received, 6.81KB sent
274
275 Wake lock GTALK_CONN: 2s 72ms partial (57 times) realtime
276
277 Wake lock GTALK_DATA_MSG: 1s 192ms partial (1 times) realtime
278
279 Wake lock GTALK_ASYNC_CONN: 10s 529ms partial (4 times) realtime
280
281 Wake lock GmailProviderProviderChangedBroadcastWakeLock: 1s 329ms partial (1 times) realtime
282
283 Proc com.google.process.gapps:
284
285 CPU: 12s 590ms user + 1s 110ms kernel
286
287 0 process starts
288
289 Apk com.google.android.googleapps:
290
291 (nothing executed)
292
293 Apk com.google.android.apps.gtalkservice:
294
295 17 wakeup alarms
296
297 Service com.google.android.gtalkservice.service.GTalkService:
298
299 Created for: 18m 49s 325ms uptime
300
301 Starts: 0, launches: 0
302
303 Apk com.google.android.providers.gmail:
304
305 (nothing executed)
306
307 #10010:
308
309 (nothing executed)
310
311 #10011:
312
313 Network: 8.40KB received, 9.23KB sent
314
315 Wake lock window: (nothing executed)
316
317 Wake lock LocationFriendService: 23s 29ms partial (9 times) realtime
318
319 Wake lock BackgroundFriendService: (nothing executed)
320
321 Sensor GPS: (not used)
322
323 Proc com.google.android.apps.maps:LocationFriendService:
324
325 CPU: 6s 720ms user + 1s 470ms kernel
326
327 6 process starts
328
329 Proc com.google.android.apps.maps:BackgroundFriendService:
330
331 CPU: 1s 60ms user + 350ms kernel
332
333 4 process starts
334
335 Apk com.google.android.apps.maps:
336
337 9 wakeup alarms
338
339 Service com.google.googlenav.friend.android.BackgroundFriendService:
340
341 Created for: 8s 388ms uptime
342
343 Starts: 9, launches: 9
344
345 Service com.google.googlenav.friend.android.LocationFriendService:
346
347 Created for: 59s 164ms uptime
348
349 Starts: 48, launches: 48
350
351 #10012:
352
353 Wake lock window: (nothing executed)
354
355 Wake lock StartingAlertService: (nothing executed)
356
357 Proc com.android.mms:
358
359 CPU: 380ms user + 80ms kernel
360
361 1 process starts
362
363 Apk com.android.mms:
364
365 Service com.android.mms.transaction.TransactionService:
366
367 Created for: 410ms uptime
368
369 Starts: 2, launches: 2
370
371 #10013:
372
373 Wake lock window: (nothing executed)
374
375 Wake lock com.android.music.MediaPlaybackService: (nothing executed)
376
377 Wake lock android.media.MediaPlayer: (nothing executed)
378
379 Apk com.android.music:
380
381 Service com.android.music.MediaPlaybackService:
382
383 Created for: 18m 49s 325ms uptime
384
385 Starts: 0, launches: 0
386
387 #10014:
388
389 (nothing executed)
390
391 #10015:
392
393 (nothing executed)
394
395 #10019:
396
397 (nothing executed)
398
399 #10021:
400
401 (nothing executed)
402
403 #10022:
404
405 Wake lock window: (nothing executed)
406
407 Apk com.android.vending:
408
409 (nothing executed)
410
411 #10024:
412
413 Wake lock window: (nothing executed)
414
415 #10025:
416
417 Wake lock window: (nothing executed)
418
419 #10026:
420
421 Wake lock window: (nothing executed)
422
423 Wake lock MyTracks: (nothing executed)
424
425 Sensor GPS: (not used)
426
427 Sensor 2: (not used)
428
429 Apk com.google.android.maps.mytracks:
430
431 (nothing executed)
432
433 #10027:
434
435 Apk com.google.tts:
436
437 (nothing executed)
438
439 #10028:
440
441 (nothing executed)
442
443 #10029:
444
445 Wake lock window: (nothing executed)
446
447 Sensor 0: (not used)
448
449 Sensor GPS: (not used)
450
451 Sensor 1: (not used)
452
453 Sensor 2: (not used)
454
455 #10030:
456
457 Wake lock net.jaqpot.netcounter.service.NetCounterService: 3m 24s 254ms partial (138 times) realtime
458
459 Proc net.jaqpot.netcounter:
460
461 CPU: 3m 39s 510ms user + 5s 960ms kernel
462
463 0 process starts
464
465 Apk net.jaqpot.netcounter:
466
467 Service net.jaqpot.netcounter.service.NetCounterService:
468
469 Created for: 18m 49s 325ms uptime
470
471 Starts: 0, launches: 0
472
473 #10031:
474
475 Wake lock com.twofortyfouram.common.WAKE_LOCK: (nothing executed)
476
477 Wake lock WifiService: (nothing executed)
478
479 Wake lock window: (nothing executed)
480
481 Sensor GPS: (not used)
482
483 Apk edu.mit.locale:
484
485 (nothing executed)
486
487 #10032:
488
489 Wake lock window: (nothing executed)
490
491 #10033:
492
493 Wake lock RemoteDroid: (nothing executed)
494
495 Sensor 0: (not used)
496
497 Sensor 1: (not used)
498
499 #10034:
500
501 (nothing executed)
502
503 #10035:
504
505 Wake lock window: (nothing executed)
506
507 Wake lock Importing: (nothing executed)
508
509 Sensor GPS: (not used)
510
511 Sensor 2: (not used)
512
513 #10036:
514
515 Wake lock window: (nothing executed)
516
517 Sensor 1: (not used)
518
519 #10037:
520
521 Wake lock window: (nothing executed)
522
523 #10038:
524
525 Wake lock window: (nothing executed)
526
527 Apk com.google.android.netmeter:
528
529 (nothing executed)
530
531 #10039:
532
533 (nothing executed)
534
535 #10040:
536
537 Apk com.google.android.apps.uploader:
538
539 (nothing executed)
540
541 #10041:
542
543 (nothing executed)
544
545 #10042:
546
547 Sensor GPS: (not used)
548
549 Sensor 2: (not used)
550
551 #10043:
552
553 Wake lock WifiService: (nothing executed)
554
555 Sensor GPS: (not used)
556
557 Sensor 0: (not used)
558
559 Sensor 1: (not used)
560
561 #10044:
562
563 (nothing executed)
564
565 #10045:
566
567 Wake lock window: (nothing executed)
568
569 #10046:
570
571 Wake lock window: (nothing executed)
572
573 #10047:
574
575 Turned Wifi On Time: 7h 24m 9s 124ms (100.0%)
576
577 Full Wifi Lock Time: 0ms (0.0%)
578
579 Scan Wifi Lock Time: 0ms (0.0%)
580
581 Wake lock window: (nothing executed)
582
583 #10048:
584
585 Wake lock window: (nothing executed)
586
587 #10049:
588
589 (nothing executed)
590
591 #10050:
592
593 Sensor GPS: (not used)
594
595 Sensor 2: (not used)
596
597 #10051:
598
599 Wake lock window: (nothing executed)
600
601 Apk com.stylem.wallpapers:
602
603 (nothing executed)
604
605 #10052:
606
607 Apk com.pureinnovation.purerss:
608
609 (nothing executed)
610
611 #10053:
612
613 Wake lock window: (nothing executed)
614
615 #10054:
616
617 Wake lock window: (nothing executed)
618
619 #10055:
620
621 (nothing executed)
622
623 #10056:
624
625 Sensor 0: (not used)
626
627 Sensor 1: (not used)
628
629 #10057:
630
631 Wake lock window: (nothing executed)
632
633 Proc com.tni.TasKiller:
634
635 CPU: 10ms user + 0ms kernel
636
637 0 process starts
638
639 #10058:
640
641 Wake lock window: (nothing executed)
642
643 Apk se.f1nally.snowstorm:
644
645 (nothing executed)
646
647 #10059:
648
649 Wake lock window: (nothing executed)
650
651 #10060:
652
653 Wake lock window: (nothing executed)
654
655 #10061:
656
657 (nothing executed)
658
659 #10062:
660
661 Wake lock WifiService: (nothing executed)
662
663 Wake lock window: (nothing executed)
664
665 Wake lock ubikim-service/idle: (nothing executed)
666
667 Wake lock ubikim-service/keep-alive: (nothing executed)
668
669 Apk com.ubikod.android.ubikim.buddymob:
670
671 Service com.ubikod.android.ubikim.service.UbikIMService:
672
673 Created for: 18m 49s 325ms uptime
674
675 Starts: 0, launches: 0
676
677 #10063:
678
679 Wake lock window: (nothing executed)
680
681 #10064:
682
683 (nothing executed)
Ich möchte noch folgende Erklärung vorrausschicken. Das Handy steckt unter Tags und Abends, bei mir meistens per USB am Laptop, da ich viel damit arbeite. Vor dem Schlafengehen wird der Laptop ausgeschaltet und das Handy schaltet auf Batterie und geht automatisch in den Sleepmodus.
Schauen wir uns nun einmal die ersten paar Zeilen dieses Ausschnitts näher an:
2
3 Total run time: 8h 20m 52s 569ms realtime, 1h 15m 32s 770ms uptime,
4
5 Screen on: 2m 8s 269ms (0.5%), Input events: 156, Active phone call: 0ms (0.0%)
6
7 Screen brightnesses: dark 7s 373ms (5.7%), medium 2m 0s 897ms (94.3%)
8
9 Total received: 60.41KB, Total sent: 91.52KB
10
11 Total full wakelock time: 1s 759ms , Total partial waklock time: 15m 4s 397ms
12
13 Signal levels: good 471ms (0.0%) 2x, great 7h 24m 8s 653ms (100.0%) 0x
14
15 Radio types: none 17m 12s 68ms (3.9%) 2x, umts 7h 6m 57s 56ms (96.1%) 2x
16
17 Wifi on: 7h 24m 9s 124ms (100.0%), Wifi running: 23m 26s 582ms (5.3%), Bluetooth on: 7h 24m 9s 124ms (100.0%)
Hier ist zu erkennen, dass das Handy 7 Stunden 24 Minuten auf Batterie gelaufen ist, 88,7% der Zeit seit dem letzten Ende der Aufladung. Den Rest der Zeit wurde wieder geladen (Laptop eingeschaltet)
Die Gesamtlaufzeit von 8 Stunden 20 Minuten steht dann in der nächsten Zeile "Total Runtime". Hier ist auch die Uptime (Zeit in welcher das Handy nicht im SleepMode war) zu lesen.
Die nächsten beiden Zeilen, Screen on/brigthness zeigen das Bildschirmverhalten während dieser Zeitspanne. Interessant ist die Zeile: "Total received" - Sie zeigt an wieviel Datenverkehr unser Handy in dieser Zeitspanne insgesamt abgewickelt hat.
Ebenfalls sehr interessant sind die Zeilen: "Signal Levels" und "Radio Types".
Aus Ihnen können wir interessante Rückschlüsse auf das Verhalten des sogenannten "Radio Modules" unseres Handys ziehen. Das Radio Module unseres Handys kümmert sich um sämtliche Funkverbindungen die unser Handy zu bieten hat. -> Wifi (Wlan), Bluetooth, GPRS, EDGE, (2g) UMTS (3g), GPS
(Wobei es noch ein extra GPS Modul gibt)
Interessant ist nun zu sehen, dass mein Handy über Nacht, scheinbar ganze 17 min. lang keine Verbindung zum Provider hatte "Radio Types: none 17m 12s 68ms"
Diese Logfile Aussage lässt nun folgende Schlussfolgerung zu:
In diesem Zeitraum schaltet das Handy auf volle Sendeleistung und versucht nun successiv sich mit einen bekannten Handymast nach dem anderen zu verbinden. (Die Nachbarmasten, oder besser Zellen, sind dem Handy bekannt) Da dies für den Zeitraum von 17 Minuten nicht gelungen ist, gehe ich davon aus, dass mein Provider heute Nacht einen kleinen Ausfall hatte.
Nun kosten aber genau solche Dinge teilweise recht viel CPU und damit Akkuzeit.
Weiters können wir daraus ablesen, dass es nicht unbedingt Applikationen sein müssen, die Akkuzeit auffressen.
In diesem Fall hat unser Provider ein solches Verhalten verursacht. In was für Zeitabständen das Handy nun versucht eine neue Verbindung zu erlangen ist mir nicht bekannt. Das würde eine genaue Sourcecodeanalyse und Studium der Konfigurationsfiles erfordern.
Die nächsten Zeilen des Reports :
2
3 Last discharge cycle start level: 100
4
5 Last discharge cycle end level: 97
Hier wird lediglich gesagt, dass Handy wurde mit 100% Ladung vom Strom genommen und als es wieder angesteckt wurde, war noch 97 % Akkuladdung vorhanden.
Über Nacht wurden also nur 3% Akku verbraucht. Dazu sollte gesagt werden, dass mein Handy auf UMTS gestellt war, mit eingeschaltetem WIFI im WLAN eingebucht war und der Bluetooth Service lief ohne das jedoch ein HEadset connectetd war.
Eigentlich kein schlechtes Ergebnis wie ich finde. Nur 3 % ......
Die folgenden Zeilen gehen nun richtig ans Eingemachte. Hier werden für jede Applikation (wobei ich mir nun nicht sicher bin ob das wirklich alle sind oder nur diejenigen die auch wirklich laufen) die einzelnen Aktivitäten während dieser Zeitspanne aufgelistet. Interessant sind hierbei die Netzwerkaktiviäten die Strom fressen, sowie Aktivitäten, die ggf. den Screen angehen lassen.
Die einzelnen Aktivitäten werden hierbei nach den UID's aufsteigend gelistet, die jede Applikation unique im Linux - System hat. An anderer Stelle im Bugreport werden diese UID-App Mappings aufgeführt:
2 Running processes (most recent first):
3
4 Running Norm Proc # 7: oom_adj= 0 ProcessRecord{43268a30 116:android.process.acore/10005}
5
6 Running Norm Proc # 6: oom_adj= 14 ProcessRecord{43388158 22973:com.google.android.gm/10008}
7
8 Running PERS Proc # 5: oom_adj=-100 ProcessRecord{43296440 60:system/1000}
9
10 Running Norm Proc # 4: oom_adj= 7 ProcessRecord{434f94a8 22962:com.voss.nostalk/10003}
11
12 Running PERS Proc # 3: oom_adj=-12 ProcessRecord{432a54b8 112:com.android.phone/1001}
13
14 Running Norm Proc # 2: oom_adj= 7 ProcessRecord{4347d3c8 19802:com.google.process.gapps/10009}
15
16 Running Norm Proc # 1: oom_adj= 2 ProcessRecord{43415590 293:net.jaqpot.netcounter/10030}
17
18 Running Norm Proc # 0: oom_adj= 1 ProcessRecord{4335b728 205:com.android.inputmethod.latin/10005}
19
20
21
22 PID mappings:
23
24 PID #60: ProcessRecord{43296440 60:system/1000}
25
26 PID #112: ProcessRecord{432a54b8 112:com.android.phone/1001}
27
28 PID #116: ProcessRecord{43268a30 116:android.process.acore/10005}
29
30 PID #205: ProcessRecord{4335b728 205:com.android.inputmethod.latin/10005}
31
32 PID #293: ProcessRecord{43415590 293:net.jaqpot.netcounter/10030}
33
34 PID #19802: ProcessRecord{4347d3c8 19802:com.google.process.gapps/10009}
35
36 PID #22962: ProcessRecord{434f94a8 22962:com.voss.nostalk/10003}
37
38 PID #22973: ProcessRecord{43388158 22973:com.google.android.gm/10008}
Interessant zu sehen ist nun gleich der erste Bereich der detaillierten Liste:
2
3 Network: 32.65KB received, 65.15KB sent
4
5 User activity: 4 other, 30 long_touch, 24 touch_up
6
7 Turned Wifi On Time: 0ms (0.0%)
8
9 Full Wifi Lock Time: 0ms (0.0%)
10
11 Scan Wifi Lock Time: 5m 35s 631ms (1.3%)
12
13 Wake lock WifiService: 5m 54s 640ms partial (51 times) realtime
14
15 Wake lock ActivityManager-Launch: (nothing executed)
16
17 Wake lock PreventScreenOn Partial: (nothing executed)
18
19 Wake lock StayOnWhilePluggedIn Partial: 188ms partial (1 times) realtime
20
21 Wake lock keyguard: 1s 390ms full (1 times) realtime
22
23 Wake lock CheckinService: 9s 710ms partial (1 times) realtime
24
25 Wake lock ActivityManager-Sleep: 47ms partial (1 times) realtime
26
27 Wake lock NotificationService: 319ms partial (1 times) realtime
28
29 Wake lock SyncManagerHandleSyncAlarmWakeLock: 398ms partial (1 times) realtime
30
31 Wake lock HardwareService: 325ms partial (1 times) realtime
32
33 Wake lock StayOnWhilePluggedIn Screen Dim: 369ms full (1 times) realtime
34
35 Wake lock window: (nothing executed)
36
37 Wake lock keyguardWakeAndHandOff: 5ms partial (1 times) realtime
38
39 Wake lock SCREEN_FROZEN: (nothing executed)
40
41 Wake lock sleep_broadcast: 360ms partial (3 times) realtime
42
43 Wake lock SyncManagerSyncWakeLock: 6s 385ms partial (1 times) realtime
44
45 Wake lock AlarmManager: 14s 60ms partial (170 times) realtime
46
47 Wake lock LocationManagerService: 4m 27s 528ms partial (48 times) realtime
48
49 Wake lock UpdateVerifier: (nothing executed)
50
51 Sensor 0: 2m 8s 309ms realtime (1 times)
52
53 Proc system:
54
55 CPU: 1m 49s 840ms user + 21s 660ms kernel
56
57 0 process starts
58
59 Apk com.android.providers.subscribedfeeds:
60
61 Service com.android.providers.subscribedfeeds.SubscribedFeedsIntentService:
62
63 Created for: 187ms uptime
64
65 Starts: 1, launches: 1
66
67 Apk com.google.android.server.checkin:
68
69 1 wakeup alarms
70
71 Service com.google.android.server.checkin.CheckinService:
72
73 Created for: 18m 49s 325ms uptime
74
75 Starts: 0, launches: 0
76
77 Apk android:
78
79 51 wakeup alarms
Daraus geht hervor, dass alleine das Hauptsystem selber, bereits 50% des Netzwerktraffics direkt oder indirekt verursacht hat, der in der gesamten Nacht angefallen ist.
Im wesentlichen sind das in diesem Fall: WifiService und LocationManagerService (Locator von Google Maps) sowie der CheckinService unseres Handys (die "Ich telefoniere nach Hause" Funktion von Android wie ich sie gerne nenne)
Und so geht es im App für App und Service für Service weiter. Wie man sieht, sind wir also dazu in der Lage, sehr genau die wahren Stromfresser unserers Handys zu ermitteln.
Warum da nun allerdings eine spezielle Applikation oder ein bestimmter Service plötzlich Amok läuft und unseren Akku und die CPU malträtiert kann damit noch nicht explizit gesagt werden. Hier müssen wir die Randbedingungen, wie Providerverbindung, WifiStati, Bluetoothfehler, Exeptions usw. mit berücksichtigen.
Wenn also der Provider ausfällt und kein Wifi eingeschaltet ist beispielsweise, kann es bei mehreren Applikationen im Hintergrund durchaus sein, dass plötzlich alle diese Apps in einer Schleife laufen wo versucht wird eine Verbindung zum Server aufzubauen.
Das kann, je nach Anzahl der Apps nun zu einem ziemlichen Akkudesaster führen.
Für einen Entwickler würde das bedeuten, das er wenn seine Applikation auf solche Verbindungen angewiesen ist, Rücksicht auf Akkulaufzeit nimmt. Er könnte das bspw. so tun, das wenn keine Verbindung zustande kommt, erstaml versucht zu klären, ob überhaupt ein nutzbares Netz vorhanden ist. Wenn nicht könnte er den nächsten "Netzwerk wieder online" Broadcast abwarten und erst dann einen neuen Versuch starten die Verbindung aufzubauen.
Leider zeigt die Praxis und viele Sourcecode Beispiele im Internet das genau das nicht der Fall ist und die Apps gnadenlos im ms Takt Verbindungsversuche aufnehmen. Hier ist also die Entwicklergemeinde gefordert, sich genauer über die Auswirkungen von Exeptionbehandlungen in Zusammenhang mit Netzwerkprogrammierung zu befassen.
Ich hoffe nun das ich Euch ein wenig über die Methodik zu Fehlersuche bei zunächst unerklärlichen Batterieverlusten vermitteln konnte.
Allerdings ist es zugegeben nicht einfach diese Bugreports zu lesen und erst recht nicht die Ausgaben zu interpretieren. Manche Interpretation erfordert einfach viel Hintergrundwissen um Netzwerke, Betriebsysteme und ihr Verhalten, sowie einfach ein großes Maß an Erfahrung in diesen Bereichen. Nicht zuletzt ist die Fähigkeit zum analytischen Denken ein große Hilfe.
Dies alles sollte aber niemanden davon abhalten, sich in das Abenteuer Bugreport lesen zu stürzen. es kann u.U. viel Zeit und unnötige Raterei sparen indem man sich mal an der Basis informiert.
Über Feedback zu diesem Artikel freue ich mich natürlich und hoffe nun einigen damit geholfen zu haben.
lg
Voss
lg Voss
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.