697 Commits

Author SHA1 Message Date
Amith Yamasani
742a671273 Multi-user - 1st major checkin
Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
2012-02-03 12:01:47 -08:00
Christopher Tate
f46723b41f Implement background vs foreground broadcasts
Before now, receiving a broadcast would cause a process to be hoisted
to foreground priority / cgroup.  This is no longer the case: broadcasts
by default are handled in the background, with a suitably increased
timeout interval.  When a given broadcast needs to be dealt with in a
more timely manner, the issuer can set the new FLAG_BROADCAST_FOREGROUND
flag on the Intent, which will produce the old foreground-priority
behavior.

To avoid priority inversions, foreground broadcasts are tracked on a
separate outgoing queue and can be in flight simultaneously with a
background-priority broadcast.  If there is already a background-level
broadcast in flight to a given app and then a foreground-level one is
dispatched to that app, the app [and its handling of both broadcasts]
will be properly hoisted to foreground priority.

This change is also essentially the first step towards refactoring the
broadcast-handling portions of the Activity Manager into a more
independent existence.  Making BroadcastQueue a top-level class and
regularizing its operation viz the primary Activity Manager operation
is the next step.

Change-Id: If1be33156dc22dcce318edbb5846b08df8e7bed5
2012-02-01 14:36:34 -08:00
Guang Zhu
191713a51f Move where prop dev.bootcomplete is set
Currently test harnesses depends on this flag to determine when
the system is fully booted, and start dismissing keyguard, launch
tests etc. However, the flag is usually set when the boot animation
is still running, and typically about 5 seconds before keyguard is
up etc. Moving to to when BOOT_COMPLETE broadcast is sent makes it
work more reliable.

We also discussed about using sys.boot_completed instead,
unfortunately this flag is not in all platform and we still have
backwards compatibility to maintain in order to drive unbundled
tests.

Change-Id: I99b084cd70d8e4bcfe490ddeca868136d32712e2
2012-01-12 17:39:40 -08:00
Jeff Brown
6754ba24f1 Add plumbing for dumping database info using dumpsys.
Change-Id: I51b0364c3d3d41aa38a759fbce48e625fff1b2dd
2011-12-16 04:01:00 -08:00
Marco Nelissen
18cb28756c Add ContentProvider.dump()
This is similar to the existing dump() facility for services.
ContentProviders can now implement dump() and that info will be shown
when running "dumpsys activity provider" and when taking a bugreport.

Change-Id: I33b3b132e3c4f920153355cc368eda2f725a715f
2011-12-15 12:13:59 -08:00
Dianne Hackborn
ae0a0a84d1 Fix issue #5144065: Tap on Music icon from Home screen...
... a different app opens

In some cases when reparenting activities we could end up with a reply
chain that crosses task boundaries, so if an activity below that needs
to be reparented we pull that and the activities above it up into the
new task.

Change-Id: Ia4fa041ab7069e39dac162ddbf5b8e1de98675b9
2011-12-07 14:03:01 -08:00
Dianne Hackborn
0c0120efa2 Merge "Fix issue #5714517: App shortcuts can result in bad task intents" into ics-mr1 2011-12-05 19:16:54 -08:00
Dianne Hackborn
77eaaf04c6 Fix issue #5713576: Home redraws after returning from app on Nexus S 4G
Turn of destroying of activities during memory trimming.

Change-Id: Ibea415c13fca4f67f56adefe81a1495f5f9ad273
2011-12-05 19:00:42 -08:00
Dianne Hackborn
f5b8671c34 Fix issue #5714517: App shortcuts can result in bad task intents
New API to let you build an Intent whose base configuration is correct,
but has an additional "selector" to pick out the specific app that you
would like launched.

Change-Id: Ide9db6dc60e2844b7696cfe09b28337fe7dd63db
2011-12-05 17:42:41 -08:00
Dianne Hackborn
50685606cf Improve how we manage the previous app.
Setting it when a new activity is being resumed is too soon, because
things like an activity launching an exiting (without being seen by
the user) can knock out the real previous app that we want.

So now we set it when an activity is stopped.  At this point it is
going to move from the preceptible to background oom adj, so it is
a good point to determine whether it should be a previous app to
instead put it to that oom adj.  This also avoids things like
activities that start and immediately finish from impacting the
previous app.

Further, we keep track of the time each activity was last shown, and
use this to further filter what is set as the previous app.

Change-Id: I72d1cac4de0cc2d4598170296028f11b06918d4f
2011-12-01 12:23:37 -08:00
Dianne Hackborn
bbb09aceb6 Turn off debug log.
Change-Id: I1d4612133580d493d81d0b15752e009202e95ce0
2011-11-30 11:40:40 -08:00
Dianne Hackborn
8bf0aa9b2b Fix issue #5636525: ANR observed in setup wizard after changing language
We could sometimes allow a process to be killed while still waiting for
an activity in it to finish stopping.

Change-Id: Ibf89665c4ad6da6be22de04a82b19ef778a7fda0
2011-11-29 13:54:43 -08:00
Dianne Hackborn
672342c309 Another attempt at getting OOM reports to batch.
We now generate a stack-trace looking thing at the top of the report.

Also fix a bug I hit where the phone window manager was sending a
broadcast before the boot had completed.

Change-Id: I0cee16180e4d05c9bd3fe715212a28f504ec91ac
2011-11-29 12:55:50 -08:00
Dianne Hackborn
ee9aef0b42 Maybe fix issue #5627399: java.lang.RuntimeException - While sign in...
...through setup wizard after wipe data

Deal with finish() being called when there are no running activities
on the stack.

Also some improved debugging output.

Change-Id: Ia1d3f3f7e7b79c06ca95c738081322fc80282e0d
2011-11-16 13:21:46 -08:00
Dianne Hackborn
7aa6d31240 Whoops, need to acquire lock.
Also increase time between reports to try to reduce the amount
of redundant spam we get.

Change-Id: Iedd7d743826fffa62ee431073cb7dfb49a00cea0
2011-11-15 16:12:30 -08:00
Dianne Hackborn
d8c98fee02 Improve low memory dropbox reporting.
The msg is now constructed to try to bin these reports in
interesting ways.  We'll see.  Also change the tag name from
watchdog to lowmem, since sharkey is kindly taking care of
the back-end to handle this.

Improve how we put processes into low memory states to better
poke things like home and the previous app.

Also clean up some debug output, and add a few new am comment
options for controlling the current debug app.

Change-Id: I562a931a95244a2727bb7a6e1fd80dec259cdae2
2011-11-15 14:15:58 -08:00
Dianne Hackborn
91c2b5cebe Merge "Improve low memory reporting." into ics-mr1 2011-11-14 18:36:50 -08:00
Dianne Hackborn
8ec8d41aa6 Improve low memory reporting.
Change-Id: I42d56ab8026fd02232dd11dbfbc513fbc0a1a851
2011-11-14 18:27:24 -08:00
Dianne Hackborn
813075a678 Maybe fix issue #5405788: Device continuously opening and closing...
...the "Complete action using" dialog

I have never been able to reproduce this consistently, but here is
another stab in the twilight.  It looks like during boot we have
a potential race where we could reset the config sequence number after
we had gone through a config change, causing ActivityThread to ignore
a following config change.  Maybe this change will help.

Change-Id: I4b731df5fd5c63894ca2e9bd34693b31ab1c0565
2011-11-14 17:45:19 -08:00
Dianne Hackborn
be70785f9b Make activity manager more robust in the face of app activity leaks.
This came up from bug #5601885: Memory increase (leak?) in system_server
Stingray MR1

This isn't *really* a leak in the system process -- it is a leak in an
application process that is causing the system process to keep around
a bunch of ActivityRecord objects longer than it should, until that app
process is ultimately killed.

Unfortunately these days leaking an ActivityRecord also often means
leaking a thumbnail, which is a big slab of memory.

So make the activity manager better about this, using a weak reference
from the handle the object has so we can still clean away most of the
state associated with the ActivityRecord even if the client side leaks
its own reference.

Change-Id: Idbab45e09749cdfb54899203da7981e7b3576e25
2011-11-11 15:05:59 -08:00
Dianne Hackborn
e4d4fbc8c0 Add drop box reports of low memory.
We are tagging these as "watchdog" to make them visible in the
reporting tools.

Also new am command to kill all background processes, mostly to make
it easier to test this stuff.

Change-Id: Ib9dc4747cd8bd44156fdf11d6a087cd4272203eb
2011-11-08 15:44:34 -08:00
Dianne Hackborn
6581043a44 am 7311bd4b: Merge "Print out memory info when we get into a low memory situation." into ics-mr0
* commit '7311bd4b709750384b058d8e988e2e983c97b3f2':
  Print out memory info when we get into a low memory situation.
2011-11-05 07:34:03 +00:00
Dianne Hackborn
04d6db380f Print out memory info when we get into a low memory situation.
Change-Id: I2c8b8847a0f38135d8bf9ff9b7198517c3b0262e
2011-11-04 20:07:24 -07:00
Dianne Hackborn
28695e0c70 More performance work:
- ActivityManager now keeps track of previous app as you
  move across the home app.
- Better debug info about why an activity is being destroyed.
- New performance tests.

Change-Id: I3a5ae7cb1b9f1624c6792a4f6184353f532b8f3b
2011-11-02 22:08:41 -07:00
Dianne Hackborn
f35fe23669 Add new OOM adjustment for the "previous" process.
This is the process that you had previously been interacting with
in the UI before the current one.  Treating it specially should
allow us to improve the scenario of switching back and forth
between two apps.

Also add API constent for ICS MR1.

Change-Id: Ib3fe4df36b270be11dfd6b7e8d107c9994058a4d
2011-11-01 19:25:20 -07:00
Dianne Hackborn
2c84cfc001 Various performance and other work.
- IME service now switches between visible and perceptible depending on
  whether it is being showm, allowing us to more aggressively free its
  memory when not shown.

- The activity display time is no longer delayed by the activity
  transition animation.

- New -R (repeat) option for launching activities with the am command.

- Improved some documentation on Loader to be clear about some methods
  that apps should not normally call.

- FrameworkPerf test now allows you to select individual tests to run.

Change-Id: Id1f73de66dc93d63212183958a72119ad174318b
2011-10-31 16:52:34 -07:00
Dianne Hackborn
e02c88af79 Work on process management.
Introduce a new concept of "B" services.  All running services are
classified as either A or B.  B services are later in the LRU list.
Their oom_adj is after the home app.  This allows us to better pick
services to kill based on how long they have running, and should
reduce the amount that we end up killing the home app.

This temporarly turns on a debug log when the oom_adj of a process
is changed.  Sorry, I know it is noisy.  This is needed to try to
track down why some processes are being killed.

Also add a flag to the SyncManager's service binding to allow the
syncing process to be more aggressively killed if it has done UI.
This is to address cases we have seen where sync is causing an 80MB
gmail process to be kept around, preventing other process from running.
Now what will happen is that the syncing process will aggressively be
killed by the system, and can then be restarted in a much lighter-weight
state.

Do a little tweak in the power manager to allow us to still do smooth
brightness changes even when the fancy TV off animation is in use.

And get rid of a debug log in the window manager that was accidentally
left in.

Change-Id: I64a8eeaaa1f096bab29c665fbff804c7f1d029e2
2011-10-28 17:15:08 -07:00
Jeff Sharkey
a353d2654a Differentiate between system_server and unknown.
Bug: 5531966
Change-Id: I2b64b04f3f5a8760a2314729e8b90e9dd6699cb4
2011-10-28 11:13:27 -07:00
Dianne Hackborn
98cfebc6e8 Fix issue #5461497: Landed on Welcome screen after a tap on 'Next' in Screen 500
The basic problem was that at some points during setup wizard, this would
happen:

1. The app's process is killed.
2. The app's process is restarted, but not to actually resume the
   setup wizard activity, just to put it in the stopped state.
   When doing this, the saved state is cleared but the app will
   never provide a new one.
3. The app's process is killed again.  At this point, because the
   saved state is cleared, the activity is completely removed.
4. Eventually the entire activity stack becomes empty, and a new
   setup wizard activity needs to be created as the home app.

There is a combination of bad stuff going on here.

First, why is the process being killed?  At this point the setup
wizard is the home app, so it shouldn't be killed.  There were two
reasons why this was happening:

- CryptKeeper still was not completely cleanly going away.  To fix
  this, I removed the check in the activity manager to not allow
  an activity to finish if it is the only activity on the stack and
  maybe-kindof looks like the home app.  This really wasn't necessary
  (we always take care of starting a new home activity if we find the
  stack is empty), and outright dangerous with all of these things
  purporting to be home but not.

- There was an issue in computing the oom_adj where the home app
  would not be marked as "not hidden", and if we had to re-compute
  its oom adj in the current sequence would then give it an
  adjustment as a background process...  and with all the processes
  we spin through during boot, it quickly got down to background
  #16 and killed.

Second, what is going on with the state?  This is easier, the code
in the activity manager to create a new activity but put it in the
stopped state was still clearing the saved state.  The saved state
should only be cleared when going in to the resumed state.  When
going in to the stopped state, we can just keep holding the same
saved state.

Change-Id: I7d21cdcfa082d98ca70c79d9923e29605ee4353e
2011-10-18 13:41:10 -07:00
Dianne Hackborn
eabd328dee Fix bug with CLEAR_TASK -- wouldn't clear the top activity.
Maybe this will also fix bug #5144065 as well.

I doubt I am so lucky, though.

Change-Id: I60bf595d3eff79353fdd94b0f2a089e81218bc30
2011-10-13 16:26:49 -07:00
Dianne Hackborn
38cc8960cb Fix issue #5446988: WindowManager warns BOOT TIMEOUT,...
...dev.bootcomplete flags is set before boot animation is out

Also:

- Fix crash in recent apps if the intent for an old app didn't
happen to have the new task flag set.
- Fix issue where a crash in system UI would cause the crash
dialog to be displayed below it, effectively locking the UI.  Now
the crash dialog for persistent processes is shown above everything
else.

Change-Id: I0312001a92beeae5f644c7c3e5c5e19f6716df36
2011-10-13 12:55:57 -07:00
Dianne Hackborn
58f42a59bd Fix issue #5405788: Device continuously opening and closing...
...the "Complete action using" dialog

When an application goes idle, it sends back to the activity manager
the configuration it last used, to make sure the two don't get out
of sync.  Fix a bunch of edge cases here in dealing with that, and
be sure to also send the current configuration when launching an
activity so the client is always up-to-date when launching.

Also a small fix to not show the upgrading dialog during first boot.

Change-Id: I14ed366a87cd689d1c78787369e052422290ac6f
2011-10-10 14:53:08 -07:00
Jeff Sharkey
1059c3c30a Move battery stats to xt_qtaguid for data stats.
Replace TrafficStats calls by reading values from xt_qtaguid kernel
module. To keep BatteryStatsImpl changes lightweight, cache recently
parsed stats. Tracks mobile ifaces from ConnectivityService.

Refactor xt_qtaguid parsing into factory outside of NMS. Add stats
grouping based on UID, and total based on limiting filters like iface
prefix and UID.

Bug: 4902271
Change-Id: I533f116c434b77f93355bf95b839e7478528505b
2011-10-09 13:49:08 -07:00
Kenny Root
3abd75ba3a Add DUMP permission checks to services
Some services have info that is not readily available any other way. Add
a permission check to those services.

Bug: 5389201
Change-Id: I5a9724ec89e1c11ef7813eeb52a6a05b3ea92af5
2011-09-29 11:04:15 -07:00
Dianne Hackborn
90c52de286 Fix issue #5173952: Opening a Notification From Lock Screen...
...Should Skip Unsecure Lockscreen (ICS)

Also while I am in there, clean up logging of intent objects to include
even less sensitive information, while showing the true Intent in dump
output (since apps can't get to that).

Change-Id: I35fed714645b21e4304ba38a11ebb9c4c963538e
2011-09-23 13:39:33 -07:00
Dianne Hackborn
80a7ac1063 Fix issue #5321282: Force Stop Button in Battery Screen Not disabled correctly
If the app had activities still finishing, when we checked whether it was
now stopped we would get told no.  Also some other improvements:

- Schedule an idle as part of the force stop, to get any finishing
  activities out of the stack soon rather than waiting for some activity
  to idle.
- Don't filter out stopped system apps.  This is dangerous because
  system apps may have no way for the user to explicitly launch them,
  so they could get put into a stopped state for which there is no way
  to get them out.  Also if the user really wants a system app to not
  run, the new disabling mechanism is more appropriate.

Change-Id: I34003f21dac29e2ca0f66a23b88c710de41bab99
2011-09-22 18:32:52 -07:00
Dianne Hackborn
2a6bcda03b Fix issue #5253941: ICS ignoring provider's android:process flag
Provider was not being removed from the class map because it was using
the wrong key.  D'oh.

Also a little cleanup.

Change-Id: I318e8b1a265318ac1474e0a7f14f27f89f357505
2011-09-21 15:07:05 -07:00
Dianne Hackborn
e123612c08 Merge "Work on issue #5144065: Tap on Music icon from Home screen - a different app opens" 2011-09-09 14:53:53 -07:00
Dianne Hackborn
e5ba16a7af Work on issue #5144065: Tap on Music icon from Home screen - a different app opens
When force stopping an app, when removing its activities also finish any
activities from other apps above it in the task.  This avoids some situations
where the task gets into a bad state where its root becomes a different app.

Change-Id: I79e5cd520ae321bec80adefd2ccc2b0370ace372
2011-09-09 14:48:13 -07:00
Dianne Hackborn
eeb1dca393 Fix issue #5139085: Some Recents items can't be killed
Change-Id: Ib4fa413266c4aa2223576ce0299be743358fdc26
2011-09-08 13:30:11 -07:00
Dianne Hackborn
905577f634 Fix issue #5263361: Browser instance not created in application picker
The resolver activity was hiding the following activity from recents.

Also some other fixes: a little better memory use debugging, removed
some unneeded code from window manager, moved some system activities
into their own process, added some more running process information for
manage apps.

Change-Id: I66687d16989ff965d524b92dc360f37c19199717
2011-09-08 10:35:11 -07:00
Dianne Hackborn
5d927c2d8e Fix issue #5150899: Call activity takes 15MB we never get back.
Persistent process can no longer use hardware acclerated drawing
when running on a low-memory device.

Change-Id: I3110335617af1c98fcede9bf41f4a1d0c20d0e87
2011-09-02 12:22:18 -07:00
Dianne Hackborn
295e3c27e4 Fix issue #5214105 and work on issue #5109947.
Change-Id: Iff2cfec5280a314989d915aa830c16124f921611
5214105: taking a screenshot while "Android is upgrading..." crashes device
5109947: Race condition between retrieving a content provider and updating its oom adj
2011-08-25 13:19:08 -07:00
Dianne Hackborn
a4bacb8b74 Fix animation scale to also scale start offset.
Also more better info in meminfo dump.

Change-Id: I45ab41821cd8dd81b61605de6a0cf7074e76c71a
2011-08-24 15:12:38 -07:00
Dianne Hackborn
cfb9f2bca3 Fix issue #5192141: systemui asplodes after enough tapping on the windowlist button
Change-Id: I5afb2d54b531d9eac9435660616579324f239812
2011-08-24 12:06:15 -07:00
Dianne Hackborn
29aae6f36e Fix issue #4279860: previous UI flashes before showing lock screen...
...(when turning display on after recently turning it off)

Also clean up when we decide to turn the screen on to improve that
transition.  There are still problems here with turning it on
before the wallpaper gets dispayed.

Change-Id: I2bc56c12e5ad75a1ce5a0546f43a845bf0823e66
2011-08-23 17:44:52 -07:00
Dianne Hackborn
661cd52e0e Add progress dialog for booting after an upgrade.
This introduces a new facility for code during the boot process
to display messages to the user through a progress dialog.  This
is only for use when performing longer-than-usual post-upgrade
operations such as running dexopt on applications or upgrading
databases.

Change-Id: I0e78439ccec3850fb67872c22f235bf12a158dae
2011-08-22 13:42:05 -07:00
Christopher Tate
d6a2be3ef7 Merge "Allow Instrumentation to kill even persistent processes" 2011-08-19 15:21:43 -07:00
Christopher Tate
3dacd8470a Allow Instrumentation to kill even persistent processes
Fixes bug 5117630

Change-Id: Iff40145fbbdc1d81a60cf2ecc5b24321162f7897
2011-08-19 14:57:57 -07:00
Dianne Hackborn
1c9b260cf5 Fix issue #5187844: Query is misrouted to wrong content provider
Change-Id: I56834f41844990d67edc8af83273036b3d755e37
2011-08-19 14:08:43 -07:00