University of Calgary
The Android OS conserves battery life by aggressively turning off components, such as screen and GPS, while allowing application developers to explicitly prevent part of this behavior using the Wake-Lock API. Unfortunately, the inherent complexity of the Android programming model and developer errors often lead to improper use of Wake-Locks that manifests as no-sleep bugs. To mitigate this problem, the authors have implemented a tool that verifies the absence of this kind of energy bugs w.r.t. a set of Wake-Lock specific policies using a precise, inter-procedural data flow analysis framework to enforce them. They run their analysis on 328 Android apps that utilize Wake-Locks, verify 145 of them and shed light on the locking patterns employed and when these can be harmful.