2016-07-28 21 views
0

Um einen Zusammenhang zu geben: Ich versuche den Energieverbrauch von Best Practices in Android-Apps zu messen. Ich habe eine App umgestaltet, die einen WakeLock verwendet, um den Bildschirm an zu halten, und ich verwende stattdessen die Flagge FLAG_KEEP_SCREEN_ON. Überraschenderweise kann ich den Energieverbrauch nur sehr geringfügig verbessern.Hat Android ein anderes Verhalten für WakeLock, wenn das Gerät an die Stromquelle angeschlossen ist?

ich die CPU erwartete in einen Niedrigenergiezustand gehen zu können, die weniger Energie aufwenden würde.

Gibt es ein anderes Verhalten in diesen Bedingungen CPU Power Management, oder die Verwendung dieses FLAG nicht erwartet wird, eine angemessene Wirkung hat?

Ich messe mit dem Gerät ODROID-XU, das an die Stromversorgung angeschlossen werden muss. Die Android-Version ist 4.2.2 - API-Ebene 17.

+0

afaik Der einzige Vorteil des Flags 'FLAG_KEEP_SCREEN_ON' in Aktivität ist, dass Sie die Wakelock-Berechtigungen nicht benötigen. – Dodge

+0

hier die entsprechende Notiz in der Dokumentation: [SCREEN_BRIGHT_WAKE_LOCK] (https://developer.android.com/reference/android/os/PowerManager.html#SCREEN_BRIGHT_WAKE_LOCK) und [SCREEN_DIM_WAKE_LOCK] (https://developer.android.com/ Referenz/android/os/PowerManager.html # SCREEN_DIM_WAKE_LOCK) – Dodge

+1

auch: ich bin sicher, sobald der Bildschirm eingeschaltet ist, ist die CPU eingeschaltet. Es würde also nicht helfen, weniger Energie zu verbrauchen, sondern nur, um die Wake-Lock-Erlaubnis zu vermeiden – Dodge

Antwort

0

Nachdem ich einige Nachforschungen angestellt habe und auf früheren Kommentaren zu dieser Frage basiert, habe ich eine Erklärung gefunden, die mir klar ist.

Der folgende Artikel beschreibt, wie ein WakeLock, um verwendet werden soll, um sicherzustellen, dass es ordnungsgemäß freigegeben wird, wenn es nicht mehr notwendig ist: http://vliux.me/android/android-power-consumption-and-wakelock/

Der Autor erklärt, dass die Verwendung eines WakeLock ist keine leichte Aufgabe, und ist anfällig für Fehler, die die Batterie entladen können. Wenn wir die Flagge FLAG_KEEP_SCREEN_ON verwenden, behandelt das System (WindowManager) die Schlösser für uns. So stellen wir sicher, dass der Wakelock ordnungsgemäß freigegeben wird.

Zusätzlich wird, wie durch @Dodge erwähnt, die Flagge mit FLAG_KEEP_SCREEN_ON keine besondere Genehmigung erforderlich ist.

Dies spiegelt sich auch in der folgenden Antwort unterstützt: https://stackoverflow.com/a/4376967/1228682.

Hinweis: Es gibt eine Flusenprüfung für eine falsche Wake Lock-Verwendung, die die Verwendung von FLAG_KEEP_SCREEN_ON vorschlägt: Suchen Sie nach "Wakelock" unter lint docs: http://tools.android.com/tips/lint-checks.

0

Der Grund, warum Sie nicht viel Unterschied gefunden ist

WakeLock das Gerät vor dem Schlafengehen verhindert, wenn der Bildschirm des Geräts ausgeschaltet ist, während, wenn Ihr FLAG_KEEP_SCREEN_ON mit Das Display nutzt auch die Macht zusammen mit der App, und glauben Sie mir, es braucht eine angemessene Menge an Strom.

So wäre das Ergebnis fast gleich sein, während FLAG_KEEP_SCREEN_ON Verwendung in schlechten UX führen könnte.