Fix issue #16907799: Processes containing bound services...
...are killed over eagerly. When the current foreground activity is moving to the background, it was briefly going through the CACHED_ACTIVITY state before the correct LAST_ACTIVITY state, allowing its bound service processes to be killed (because they went in to the cached list). To solve this, as long as a process has stopping activities, it won't go lower than LAST_ACTIVITY. Also fixed a problem where we could put a process in CACHED_EMPTY instead of CACHED_ACTIVITY_CLIENT. There were a number of cases in the binding flow and also the client process state transitions where we would not correctly updateing the bound client activity state. And add some sanity code so that if a process hosting a service is killed, and a client process of that service is in the cached state, we kill the client process. This avoids situations where we can start thrashing around in the cached list because we are restarting process for no reason -- since they will just continue to be cached. Finally, tune the process LRU list to allow twice as many cached activity processes (from 8 to 16), so we can make better use of the RAM we have available these days. Change-Id: Ib0cdf78c321cbb035259fc9dd6ee27b5ba1f90c5
Loading
Please register or sign in to comment