Android Applications in Screen-Off State
We measured the number of WakeLock acquisitions and sets of alarm, and estimated battery draining application with the proposed method. The experimental setup and the used applications are the same as those of section III. After estimation, we uninstalled some applications and measured power consumption. The results are shown in figure 2. In the case of “without_alarm_schedule10”, the top 10 applications in ranking of the number of setting alarm were uninstalled from “with_all”. In the case of “without_direct10”, the top 10 applications in the rank of the number of WakeLock acquisitions were uninstalled. In the case of “without_random_10”, 10 applications in alphabetical order were uninstalled. This shows the average power consumption of four experiments, which are uninstalling the first 10 applications in alphabetical order, uninstalling the second 10 applications (from 11 to 20), uninstalling the third 10 application (21-30), and uninstalling the fourth 10 applications (31-40). In all cases, remaining 32 apps were still installed. Focusing on “without_direct10”, we can see that the number of WakeLock acquisitions is less than that of “without_random10”. However, their power consumptions are similar. Thus, we can see that monitoring direct WakeLock is not an effective way. Focusing on “without_alarm_schedule10 ”, the number of WakeLock acquisitions and power consumption are remarkably less than those of “without_direct10” and “without_random10”. As a result, we can conclude that battery draining applications can be identified by monitoring the number of alarm sets and power consumption can be significantly decreased by uninstalling these applications. VI.DISCUSSIONIn this section, we discuss ways of applying our method. We applied our method by modifying Android OS. However, alarm information can be obtained with unmodified OS, using dumpsys alarm command by a non-root user. Thus, this method can be easily applied to usual devices in general market. Monitoring WakeLock requires OS modification. This method can be applied by installing modified OS for reference devices. We think this method is useful for application venders and application market administrators for evaluating applications. CodeShoppy
Experiment We investigated the relation between power consumption and WakeLock acquisition. We modified Android OS, which is open source software, then enabled recording WakeLock acquisitions. We installed the applications in top 50 of ranking of Google Play Store  of category “Widget” on Jan. 26th 2014. The eight applications of the 50 applications do not support the experimental device, so 42 applications were installed. We monitored release of WakeLock and transition of remaining battery for 24 hours. The device is set to change into screen-off state after 30 minutes from the last operation. Modifications of Android OS are as follows. We inserted monitoring function into onWakeLockAcquired() method and onWakeLockReleased() method in frameworks/base/services/java/com/android/server/power/Notifier.java. The function records PID and name of the process which acquired WakeLock, the time of acquisition, and value of variable tag. These data are stored into a text file in /data/data/. The used device is Nexus 7 (2013). The specification is as follows; CPU Qualcomm Snapdragon S4 Pro 1.5GHz, memory 2GB, OS Android 5.0.1.B.Experimental Results The experimental results are shown in figure 1. “WakeLock” shows the number of acquired WakeLock in 24 hours. “systemserver” depicts the number of WakeLock acquired by the systemserver process. “AlarmManager” means the number of WakeLock by systemserver with tag AlarmManager. “Power consumption” shows decreased remaining battery [%] in 24 hours. “with_all” is the experiment with the standard applications, which are included in AOSP OS, and the above 42 applications installed. “no_app” shows the results with only the standard applications. The others will be mentioned in the next section. The results show that power consumption and the number of WakeLock acquisitions in screen-off state are increased, that is 17 %, by installing applications. The power consumption without installing the 42 applications is small, that is 5 %. From the figure, we can see that power consumption in screen-off state is mainly caused by installed applications. Thus, we can say that observing application behavior is important for decreasing power consumption in screen-off state. In addition, we can expect that the number of WakeLock acquisitions and power consumption have correlation. Especially, we expect that the power consumption has strong correlation with indirect WakeLock acquisition when using Alarm Manager because most of the Wake Lock acquisitions are invoked by Alarm Manager
In addition to the modification in sectionIII.A, we modified Android OS for recording set of alarm. If alarm is set, the launching time and name of application are recorded. The launching time is same as the time obtained by dumpsys alarm command. We inserted our recording implementation in dumpAlarmList() method in frameworks/base/ser vices/core/java/com/android/server/AlarmManagerService.java. The function stores the above information in a text file in /data/data/In this paper, we focus on power consumption of Android devices in screen-off state. We proposed a method for identifying battery draining applications by monitoring WakeLock acquisitions and sets of alarm. Our experiments have demonstrated that our method can effectively detect applications which heavily consume electric power.