Commit Graph

8016 Commits

Author SHA1 Message Date
Dianne Hackborn
8920f1cc73 am fd96eb05: am 1866f68d: Merge "Modify how the background process LRU list is handled." into jb-mr1-dev
* commit 'fd96eb05babf404e07366d09f71849c1aa0d20da':
  Modify how the background process LRU list is handled.
2012-08-13 17:19:27 -07:00
Dianne Hackborn
aa50ad3932 am dabd459f: am 87c42b99: Merge "Small service cleanup." into jb-mr1-dev
* commit 'dabd459f9083b4be22ae1f97517a5c2cb8010e5b':
  Small service cleanup.
2012-08-13 17:19:24 -07:00
Dianne Hackborn
1866f68dfe Merge "Modify how the background process LRU list is handled." into jb-mr1-dev 2012-08-13 17:15:04 -07:00
Dianne Hackborn
f88dd0b32e Small service cleanup.
Get rid of duplication between find/retrieve service funcs; when
a service in a persistent process crashes, restart it immediately
since the persistent process is going to be immediately restarted
anyway; when a new process is attaching, immediately restart any
services associated with it that are waiting to restart, since
it is weird to not let them run if the process comes back for some
other reason.

Change-Id: Id087fe04ebf2b6a4bd00732796c8326364765ea7
2012-08-13 17:11:47 -07:00
Dianne Hackborn
ee7621c0f5 Modify how the background process LRU list is handled.
A long time ago, we had a concept of an "empty" process -- this was
a process that didn't have any interesting components in it, which
would be placed below everything else in the LRU list.

Empty processes didn't work out well, because you could get into
bad situations where you have filled your LRU list with things that
have hidden activities, pushing empty processes to the bottom and
being immediately killed as soon as they go into the list.  So this
was removed.

This change brings the concept back, but in a slightly different
form, to address a more specific problem: for people who are switching
between N different applications, we would like to try to keep those
activities available in RAM in a consistent manner.  Currently the
previous activities would be killed often quickly and suprisingly,
even on devices with lots of RAM.  This is for two reasons:

(1) As you sit in one application, other things going on in the
background will go to the top of the LRU list, pushing down the
previous apps you have visited, even though you aren't aware at all
of these other things executing.
(2) There is a hard limit on the number of background processes
(currently 16) after which they are killed regardless of the amount
of available RAM.  This is desireable because if there is lots of
RAM we can end up with tons and tons of processes sitting around,
not really serving any purpose, but using up resources.

To improve the situation, we have again a concept of "empty" processes
but now it means one with no activities.  Processes that aren't empty
but in the background list are called hidden.  We maintain these as
two parallel lists, each getting half of the process limit: so with
a 16 process limit, you can have at most 8 empty and 8 hidden processes.

This allows us to consistently keep up to 8 recent applications around
for fast app switching; we will also keep around 8 other processes to
make it more efficient for background work to execute again if it needs
to.

Change-Id: Iee06e45efc20787da6a1e50020e5421c28204bd7
2012-08-13 17:09:19 -07:00
John Spurlock
924a953271 am 1e33ce8b: am 460847c7: Merge "Stop screensaver on incoming phone call." into jb-mr1-dev
* commit '1e33ce8b434b8ce277ebe1e4e9e4f2b46dc29682':
  Stop screensaver on incoming phone call.
2012-08-13 14:39:34 -07:00
John Spurlock
7be1a3d67c Stop screensaver on incoming phone call.
Use notification manager as an indicator of when to stop the screensaver
due to immediately-needed user interaction.

Any notification with a fullScreenIntent will now exit the screensaver.

Bug: 6976796
Change-Id: Id91cd4c32f3fad018b56f4dfe24b37110bab32d8
2012-08-13 16:45:12 -04:00
Kenny Root
ece42ed2f9 am be62be01: am 38cc2a5a: am 3221bf27: am 438a0efc: Do not eject internal ASECs when storage unmounted
* commit 'be62be01abb5132deb901d4ac12692e56d76f97c':
  Do not eject internal ASECs when storage unmounted
2012-08-13 11:46:12 -07:00
Kenny Root
38cc2a5a3a am 3221bf27: am 438a0efc: Do not eject internal ASECs when storage unmounted
* commit '3221bf27ff6b8eebf360ed2496ad5c56b95fd689':
  Do not eject internal ASECs when storage unmounted
2012-08-13 11:42:20 -07:00
Kenny Root
3221bf27ff am 438a0efc: Do not eject internal ASECs when storage unmounted
* commit '438a0efcfbee5dc953e8e5bbdf4cb3dbe94b3f80':
  Do not eject internal ASECs when storage unmounted
2012-08-13 11:40:10 -07:00
Kenny Root
438a0efcfb Do not eject internal ASECs when storage unmounted
If the incoming request is to notify of storage unmounted, don't mess
with apps that are in internal ASECs.

Bug: 6948035
Change-Id: I63ffb895c4d994ee03a5a9bd6bb23f69c88e2a87
2012-08-13 10:51:09 -07:00
Amith Yamasani
dda851ce9a am 7871b629: am f83d2d6f: Merge "User Manager service to manage users and query user details" into jb-mr1-dev
* commit '7871b629a63a542fb81179c9239c21255a7a42ad':
  User Manager service to manage users and query user details
2012-08-11 21:42:07 -07:00
Amith Yamasani
258848d2ae User Manager service to manage users and query user details
Moved a bunch of methods from PackageManager to UserManager.

Fix launching of activities from recents to correct user.

Guest creation APIs

Change-Id: I0733405e6eb2829675665e225c759d6baa2b708f
2012-08-11 18:24:07 -07:00
Nick Pelly
e2a0b87b31 am e80693f6: am 75f0fac9: Merge "Fix a couple of bugs from the location overhaul." into jb-mr1-dev
* commit 'e80693f6fc4efd7e852a252a612011f7ea1ee17b':
  Fix a couple of bugs from the location overhaul.
2012-08-10 17:24:54 -07:00
Nick Pelly
75f0fac91b Merge "Fix a couple of bugs from the location overhaul." into jb-mr1-dev 2012-08-10 17:19:09 -07:00
Nick Pelly
08ca1046fe Fix a couple of bugs from the location overhaul.
Marshall LocationRequest array correctly.

Observe reportLocation from FusionEngine.

Actually deliver the setRequest message to fusion engine.

Change-Id: Iff64596fdd42f9fb06e563591dda9fbe0241533a
2012-08-10 17:17:32 -07:00
Ashish Sharma
f80f8a3ac9 am 35d875ad: am 77b25796: Merge "Setup idletimer for network interface." into jb-mr1-dev
* commit '35d875ade38abd8dba6b7756ca612167ce8bcad0':
  Setup idletimer for network interface.
2012-08-10 16:09:34 -07:00
Ashish Sharma
77b257967d Merge "Setup idletimer for network interface." into jb-mr1-dev 2012-08-10 16:04:07 -07:00
Haoyu Bai
0412423f06 Setup idletimer for network interface.
Cherry-picked from commit f71ca8a572 in
master. DO NOT MERGE

Change-Id: I6101c7ae041b4cc1237ce7a9983753dbdfa301d3
2012-08-10 15:58:34 -07:00
Nick Pelly
ecdf2be6fe am b6c703fd: am 6fa9ad4a: Location overhaul, major commit.
* commit 'b6c703fda4995ccd702d4af65e12309d71732594':
  Location overhaul, major commit.
2012-08-10 15:05:27 -07:00
Nick Pelly
6fa9ad4afc Location overhaul, major commit.
Themes: Fused Location, Geofencing, LocationRequest.

API changes
o Fused location is always returned when asking for location by Criteria.
o Fused location is never returned as a LocationProvider object, nor returned
  as a provider String. This wouldn't make sense because the current API
  design assumes that LocationProvider's have fixed properties (accuracy, power
  etc).
o The fused location engine will tune itself based on the criteria passed
  by applications.
o Deprecate LocationProvider. Apps should use fused location (via Criteria
  class), instead of enumerating through LocationProvider objects. It is
  also over-engineered: designed for a world with a plethora of location
  providers that never materialized.
o The Criteria class is also over-engineered, with many methods that aren't
  currently used, but for now we won't deprecate them since they may have
  value in the future. It is now used to tune the fused location engine.
o Deprecate getBestProvider() and getProvider().
o Add getLastKnownLocation(Criteria), so we can return last known
  fused locations.
o Apps with only ACCESS_COARSE_LOCATION _can_ now use the GPS, but the location
  they receive will be fudged to a 1km radius. They can also use NETWORK
  and fused locatoins, which are fudged in the same way if necessary.
o Totally deprecate Criteria, in favor of LocationRequest.
  Criteria was designed to map QOS to a location provider. What we
  really need is to map QOS to _locations_.
  The death knell was the conflicting ACCURACY_ constants on
  Criteria, with values 1, 2, 3, 1, 2. Yes not a typo.
o Totally deprecate LocationProvider.
o Deprecate test/mock provider support. They require a named provider,
  which is a concept we are moving away from. We do not yet have a
  replacement, but I think its ok to deprecate since you also
  need to have 'allow mock locations' checked in developer settings.
  They will continue to work.
o Deprecate event codes associated with provider status. The fused
  provider is _always_ available.
o Introduce Geofence data object to provide an easier path fowards
  for polygons etc.

Implementation changes
o Fused implementation: incoming (GPS and NLP) location fixes are given
  a weight, that exponentially decays with respect to age and accuracy.
  The half-life of age is ~60 seconds, and the half-life of accuracy is
  ~20 meters. The fixes are weighted and combined to output a fused
  location.
o Move Fused Location impl into
  frameworks/base/packages/FusedLocation
o Refactor Fused Location behind the IProvider AIDL interface. This allow us
  to distribute newer versions of Fused Location in a new APK, at run-time.
o Introduce ServiceWatcher.java, to refactor code used for run-time upgrades of
  Fused Location, and the NLP.
o Fused Location is by default run in the system server (but can be moved to
  any process or pacakge, even at run-time).
o Plumb the Criteria requirements through to the Fused Location provider via
  ILocation.sendExtraCommand(). I re-used this interface to avoid modifying the
  ILocation interface, which would have broken run-time upgradability of the
  NLP.
o Switch the geofence manager to using fused location.
o Clean up 'adb shell dumpsys location' output.
o Introduce config_locationProviderPackageNames and
  config_overlay_locationProviderPackageNames to configure the default
  and overlay package names for Geocoder, NLP and FLP.
o Lots of misc cleanup.
o Improve location fudging. Apply random vector then quantize.
o Hide internal POJO's from clients of com.android.location.provider.jar
  (NLP and FLP). Introduce wrappers ProviderRequestUnbundled and
  ProviderPropertiesUnbundled.
o Introduce ProviderProperties to collapse all the provider accuracy/
  bearing/altitude/power plumbing (that is deprecated anyway).
o DELETE lots of code: DummyLocationProvider,
o Rename the (internal) LocationProvider to LocationProviderBase.
o Plumb pid, uid and packageName throughout
  LocationManagerService#Receiver to support future features.

TODO: The FLP and Geofencer have a lot of room to be more intelligent
TODO: Documentation
TODO: test test test

Change-Id: Iacefd2f176ed40ce1e23b090a164792aa8819c55
2012-08-10 14:57:09 -07:00
Brian Muramatsu
b2a0ad4c2e am 84b3fccc: am 14262d79: Merge "Control GPS logging with property" into jb-mr1-dev
* commit '84b3fccc56a6c5929bfb3a50ebdd6b5503141cfc':
  Control GPS logging with property
2012-08-09 18:50:53 -07:00
Brian Muramatsu
14262d79c4 Merge "Control GPS logging with property" into jb-mr1-dev 2012-08-09 18:46:10 -07:00
Brian Muramatsu
1715cb36d9 Control GPS logging with property
This allows users of the PDK to debug GPS issues.

Change-Id: I4aff12e124f4264abd1a0be012df4c431044189c
2012-08-09 17:14:13 -07:00
John Spurlock
b59b8b46b9 am 4ba6f668: am c5bfe196: Merge "Fix screen timeout determination for starting dream." into jb-mr1-dev
* commit '4ba6f668f9db76cdaa9c407ab928901fe0647062':
  Fix screen timeout determination for starting dream.
2012-08-09 16:06:21 -07:00
John Spurlock
c5bfe19626 Merge "Fix screen timeout determination for starting dream." into jb-mr1-dev 2012-08-09 15:43:25 -07:00
Amith Yamasani
144b3d0a01 am 691ea437: am 2c02933b: Merge "Send BOOT_COMPLETED to all users." into jb-mr1-dev
* commit '691ea437dcdc20273acf2027a7daf5b22cd6e802':
  Send BOOT_COMPLETED to all users.
2012-08-09 11:50:26 -07:00
John Spurlock
b9ba2b6768 Fix screen timeout determination for starting dream.
It turns out OFF_BECAUSE_OF_TIMEOUT is not the best indicator
of actual screen timeout.

For example, it is the reason passed down when acquiring a wake lock.
This was causing us to launch Dreams in the wrong situations, and
deadlocking on calls to WindowManager.

This fix simply adds an additional check ensuring the intention is to
turn the screen off.

Change-Id: If8adff446b5b1fcb19424b45878b75bfd0552b90
2012-08-09 14:47:49 -04:00
Amith Yamasani
2c02933b13 Merge "Send BOOT_COMPLETED to all users." into jb-mr1-dev 2012-08-09 11:45:55 -07:00
John Spurlock
2b53b80ee7 am 9a67ad9f: am 7c46e438: Merge "Fix the dock-insertion Dream entry codepath." into jb-mr1-dev
* commit '9a67ad9f4cdbf3afe3df9af04b51090e6f849ca5':
  Fix the dock-insertion Dream entry codepath.
2012-08-09 08:21:48 -07:00
Daniel Sandler
015b9f45d4 Fix the dock-insertion Dream entry codepath.
Bug: 6956040
Change-Id: I663e13f8a28db13b94d0f5aa4dbcf0cd64ef22fe
2012-08-09 11:11:33 -04:00
Amith Yamasani
4860cfc684 Send BOOT_COMPLETED to all users.
At least until we have a concept of logged-in users.

Change-Id: I65e3bed2aeef9692dbc64169cf02a7451cfed1cd
2012-08-08 19:15:58 -07:00
Amith Yamasani
7f0e543de3 am 4fe1082e: am 8264408f: Start the correct settings from the status bar.
* commit '4fe1082ec60359baef1ccac2b3a74834fe862303':
  Start the correct settings from the status bar.
2012-08-08 16:57:19 -07:00
Amith Yamasani
8264408f59 Start the correct settings from the status bar.
Added a new method to Context: startActivityAsUser() requiring the
INTERACT_ACROSS_USERS_FULL permission.

Show the correct Recents list, based on current user.
Added a getRecentTasksForUser() in ActivityManager. Hidden and requires
the INTERACT_ACROSS_USERS_FULL permission.

Change-Id: If5b56465efdd3ead36601a3b51ed4af157bbf35c
2012-08-08 16:52:53 -07:00
Jeff Sharkey
57b7105835 resolved conflicts for merge of ab4e251a to master
Change-Id: I59ad9fe6e777c6677331f83d5e1de28b66f28af7
2012-08-08 16:39:00 -07:00
Jeff Sharkey
fb11ffa2a0 Merge "Isolate NetworkStateTracker creation, test." into jb-mr1-dev 2012-08-08 16:25:41 -07:00
Jeff Sharkey
e7f15b2286 am 6c73eb8a: am 82f479d0: Merge "Cleaner controls between Vpn and init services." into jb-mr1-dev
* commit '6c73eb8a73449ff87964936a1cc3e2d463fa7fab':
  Cleaner controls between Vpn and init services.
2012-08-08 16:25:34 -07:00
Jeff Sharkey
fb878b66b9 Isolate NetworkStateTracker creation, test.
Change ConnectivityService to use a factory when creating
NetworkStateTrackers, which gives us a good place to inject mocks
for testing.  Add initial tests to verify that network routes are
added and removed as networks changed.

Change-Id: I11cbc61a84c2ed4afa2670036295b1494eab26e1
2012-08-08 16:23:41 -07:00
Jeff Sharkey
82f479d064 Merge "Cleaner controls between Vpn and init services." into jb-mr1-dev 2012-08-08 16:22:23 -07:00
Rich Cannings
b38cb4da4a am 22c5c52d: am a56d9cec: Merge "Revert "Pass URLs to package verifiers"" into jb-mr1-dev
* commit '22c5c52d43d055db307e6a0136180e7995db49f1':
  Revert "Pass URLs to package verifiers"
2012-08-08 15:11:15 -07:00
Jason Simmons
6db52cd09f am b2977a45: am 5017f232: Call systemReady on the lock settings before doing so on the window manager
* commit 'b2977a45f62906cbb1b78c3c236ecdc9483753f7':
  Call systemReady on the lock settings before doing so on the window manager
2012-08-08 15:11:02 -07:00
Rich Cannings
a56d9cecee Merge "Revert "Pass URLs to package verifiers"" into jb-mr1-dev 2012-08-08 13:50:56 -07:00
Jason Simmons
5017f23284 Call systemReady on the lock settings before doing so on the window manager
At systemReady time, the window manager needs to obtain values from the lock
settings service (e.g. whether the lock screen is disabled).  During the
initial boot of a wiped device, the window manager was getting the wrong
values because LockSettingsService.systemReady/migrateOldData had not yet been
called.

Change-Id: I60825d0e4fad53a5b4349dabf9e5e299b863d0d0

(cherry pick of 2458abaf6676d5015af733c1010ecd67a085e9e2 from jb-aah-dev)
2012-08-08 13:15:00 -07:00
Rich Cannings
e1d7c711df Revert "Pass URLs to package verifiers"
This reverts commit 24713907fe

Change-Id: Ie04ba73475b813635c4a74915c45e83250801b6b
2012-08-08 12:46:06 -07:00
Dianne Hackborn
128f16cfe0 am 852f06b3: am 53791582: Merge "More mult-user API work." into jb-mr1-dev
* commit '852f06b3fc84d559c2ff2ede2b8477bfd4c4ffa6':
  More mult-user API work.
2012-08-08 10:27:38 -07:00
Dianne Hackborn
537915828b Merge "More mult-user API work." into jb-mr1-dev 2012-08-08 10:22:49 -07:00
John Spurlock
6d02584f70 am 62293d8d: am ec0feefd: Merge "Check the ACTIVATE_ON_DOCK setting in DockObserver." into jb-mr1-dev
* commit '62293d8dd6c28688f308f46dc2128f1780213fe0':
  Check the ACTIVATE_ON_DOCK setting in DockObserver.
2012-08-08 08:52:34 -07:00
John Spurlock
786546eacc Check the ACTIVATE_ON_DOCK setting in DockObserver.
Otherwise docking the device will always launch a Dream.

Change-Id: I2e74ca62f80d7e386d11c00920a75a5a6e78926c
2012-08-08 11:40:20 -04:00
Dianne Hackborn
7d19e0242f More mult-user API work.
- You can now use android:singleUser with receivers and providers.
- New API to send ordered broadcasts as a user.
- New Process.myUserHandle() API.

For now I am trying out "user handle" as the name for the numbers
representing users.

Change-Id: I754c713ab172494bb4251bc7a37a17324a2e235e
2012-08-07 19:19:22 -07:00
Svetoslav Ganov
071efcac33 am 53efd9da: am 85b1041f: Merge "Window position not reported if the window is not moved." into jb-mr1-dev
* commit '53efd9dac8b85e0dff484293c15d802655fd9d1c':
  Window position not reported if the window is not moved.
2012-08-06 23:56:33 -07:00