Even after the introduction of Android Runtime (ART) in the latest release of Android Lollipop, Android Operating System still struggles in areas such as application launch time, especially during sluggish or memory crunch situations. When a new application is launched in a sluggish condition, low memory killer (LMK) gets initiated in order to free some memory by killing the already running applications. The current LMK approach kills application based on how recently it was used. php projects titles ideas 2019 This approach does not consider various other user scenarios such as how frequently the application was launched or how important that application is to user. In our proposed solution, we aim to improve user experience by reducing or removing the delay at memory crunch situations with efficient use of LMK.
Market share for android smartphones have been increasing exponentially day by day. With this increase in numbers of phones sold every year, even the demands for a better quality of the android phones are increasing in the competitive market. To meet the high expectations of users, companies are putting good amount of efforts in the improvement of hardware as well as software. While smartphone hardware market is already saturating to an extent, there is a lot of scope for improvement on software design on top of Google’s stock Android for better user experience. As far as user experience is concerned, application launch time is one of the most important performance parameter for any smartphone device. In general, due to the usage of many applications, a good amount of RAM gets consumed resulting in phone sluggishness. This sluggishness is very much visible to the user especially when a particular application, which user wanted to re-use, is already killed by LMK. In our proposed solution, we intend to provide a better user experience by improving LMK’s algorithm based on user’s usage of various applications. Thereby, enhance user experience by decreasing application launch time of favorite applications.
In Android operating system, there are two ways in which an application can be launched. First, zygote can be forked to create new application process when the process is not present in the background. Second, resume a process already present in background [1][2]. Depending on whether the process is being forked or resumed, the launch time of an application changes. Application’s launch time is defined as the time it takes from the moment the user touches the icon to the moment the application’s activity shows up on the screen. The Table 1 shows the 1st launch (forking) and the 2nd launch (resuming) of various application collected from Samsung Galaxy S5 through android logcat [3].
Android operating system has an in-built task killer, called low memory killer (LMK). The LMK keeps an eye on the real time RAM usage of all applications. Whenever excess of RAM is consumed, the LMK starts killing applications to free-upsome memory [4][5]. For the killing of applications, LMK has defined some set of priorities through oom_adj value. This oom_adj is set by android kernel for each process on the Android system. It ranges from -17 at the highest to +15 at the lowest. Therefore, in memory crunch situation, LMK is called and it starts killing applications from the lowest oom_adj i.e. oom_adj value of +15. For this paper, we target only the cached applications that range from +9 to +15 [5]. As important applications and services have higher priority than cached applications, so we need not worry about them.
The current algorithm of LMK kills on the basis of Least Recently Used (LRU) list [5][6]. https://codeshoppy.com/php-projects-titles-topics.html This list is maintained in the order of which the application have been launched i.e. applications which are opened recently will remain in the list while the ones which were opened earlier will get replaced. Whenever any application is opened and used by the user, the LRU lists gets updated. The problem that may arise using the LRU list algorithm is that an application which the user uses very frequently might still get killed by LMK, if that application was not used recently. In such scenarios, when user re-opens its favorite application, the application takes more time to start as it is forking the process instead of resuming. This increased launch time is perceived as sluggishness to the user. In our proposed approach, we try to tackle such scenarios by making sure that at least user’s favorite applications are given less priority to get killed by LMK.