Commit Graph

2213 Commits

Author SHA1 Message Date
Adam Powell
3d193d92f6 Handle returning a result from automatic up navigation from another
task.

When navigating up from a different task, if the current activity has
a result set only finish the current activity instead of trying
finishAffinity. Log this so that developers know why this behavior is
happening.

Bug 6465336

Change-Id: Ic7cec6f0c0d5861296091e2aea9344309f5fc600
2012-05-15 16:53:34 -07:00
Dianne Hackborn
03fcc333cf Fix issue #6284404: ArrayIndexOutOfBoundsException in...
...FragmentManagerImpl.restoreAllState

This was a bug related to the difference between the pre- and post-HC
behavior of onSaveInstanceState().  Prior to HC, state was saved
before calling onPause().  Starting with HC, it is saved between
onPause() and onStop().  To maintain compatibility with existing
applications, there is a check in ActivityThread for pre-HC to in
that case emulate the behavior of old applications, still calling
onSaveInstanceState() before onPause() but using the state later.

One of the special cases we had to deal with in the old model of
saving state before pausing was restarting an activity that is
already paused.

Consider, for example: you have two activities on screen, the one on
top not fullscreen so you can see the one behind.  The top activity
is resumed, the behind activity is paused.  In the pre-HC world, the
behind activity would have already had its state saved.

Now you rotate the screen, and we need to restart the activities.
We need to destroy the behind activity and create a new instance,
but the new instance has to end up in the paused state.  To
accompish this, we restart it with a flag saying that it should
end up paused.  For the pre-HC world, since it ends up paused,
we need to make sure we still have its instance state kept around
in case we need it because we can't regenerate it (since it is
already paused).

So that is what the changed code here is doing.  It goes through
the normal create/start/resume steps, but holds on to the current
saved state so that it isn't lost when resume clears it, and then
puts the activity back to paused and stuffs that old saved state
back in to it.

The problem is that this code was doing it for every application,
even HC apps.  So we end up in a bad state, when a HC app has its
saved state sitting there as if it had been saved, even though it
is only paused.  Now if we go to restart the activity again, instead
of asking it for a new saved state (as we should for a HC app as
part of stopping it), we just re-use the existing saved state again.

Now this wouldn't generally be a huge problem.  Worst case, when we
restart the activity yet again we are just instantiating it from
the same saved state as we used last time, dropping whatever changes
may have happened in-between.  Who cares?  All it has been doing is
sitting there in the background, visible to the user, but not something
they can interact with.  If the activity made changes to its
fragments, those changes will be lost, and we will restore it from
the older state.

However...  if one of those fragements is a retained fragment, this
will *not* appear in the saved state, but actually be retained across
each activity instance.  And now we have a problem: if the retained
fragments are changed during this time, the next activity instance
will be created from the most recent state for the retained fragments,
but the older state for everyting else.  If these are inconsistent...
wham, dead app.

To fix this, just don't keep the saved state for HC apps.

Also includes a small optimization to ActivityStack to not push
the home screen to the front redundantly.

Change-Id: Ic3900b12940de25cdd7c5fb9a2a28fb1f4c6cd1a
2012-05-15 13:13:33 -07:00
Dianne Hackborn
b61a02657b Fix issue #6020164: Settings crashed on orientation change...
...while listening to TTS example

This was a nice one.  What was happening is that immediately upon
being created, the activity was starting another activity in a
different process.  The second activity would never show, just
immediately exit.  However the original activity had time to
pause and get into stopping itself before the second activity had
come back to the activity manager to say it was going away, resulting
in the activity manager asking the original activity to resume.

At this point the activity manager's state is that the second
activity is finishing and gone, and the original activity is
resumed.  However in the app process the original activity is
still working on stopping itself, and it eventually completes
this and tells the activity manager.  The activity manager now
changes its state to STOPPED, even though it is actually resumed
and that is the last thing it told it to be, and it is now
proceeding to set itself in that state.

This would result later in the activity manager sending an
unnecessary state change to the application.  In the case of
the screen here, we next do a rotation change, the activity
manager thinks the current state is STOPPED not RESUMED, so it
tells the application to relaunch the activity in a new config
but not in the resumed state.  Now it does the whole "start a
new temporary activity" thing again, at which point it tries
to pause the original activity again, and we have an unbalanced
onPause() call to the app and it falls over.

Change-Id: I38b680746f4c61ae30e7ce831e1de187adf60902
2012-05-14 17:19:18 -07:00
Daniel Sandler
f54bfcf5a3 Merge "Restyling action buttons." into jb-dev 2012-05-10 15:44:16 -07:00
Daniel Sandler
e551884b09 Restyling action buttons.
Bug: 6418617
Change-Id: I843352fbd167aeb6cc7beb0172b7416aabd5856a
2012-05-10 16:45:48 -04:00
Daniel Sandler
a4487e1b4b Merge "Clean up API docs for Notification." into jb-dev 2012-05-10 10:57:02 -07:00
Michael Jurka
421dceb0a4 Merge "Making transition out of recents look better" into jb-dev 2012-05-10 10:35:19 -07:00
Daniel Sandler
d33b803b6b Clean up API docs for Notification.
Bug: 6427241
Bug: 6427245
Bug: 6427814
Change-Id: I91d741513e3b345d2b9f28ad0a1bf11b0a898076
2012-05-10 13:15:37 -04:00
Daniel Sandler
e95658c98e New backgrounds for notifications.
Note that PRIORITY_MIN notifications have a special
background treatment.

Bug: 6418617
Change-Id: I5f96330fcc53ac39e80a025baa0c134bd1e971b8
2012-05-10 04:52:18 -07:00
Dianne Hackborn
2c2864f65c Merge "Add new API to find total RAM." into jb-dev 2012-05-09 21:34:42 -07:00
Michael Jurka
21385cd83d Making transition out of recents look better
- Fading out recents first, then scaling up app
thumbnail
- Fade Recents out over 130ms
- Delay the window animation for 200ms first,
then animate for 200ms (previously we didn't delay
and then animated for 300ms)

Bug: 6390075

Change-Id: Ia8c753bf7ee03d2acef6eb2772b28d88fe10a682
2012-05-09 20:25:28 -07:00
Dianne Hackborn
59325eb31f Add new API to find total RAM.
Change-Id: Iad2dff3c44f471515f093e7f0d0d959528881ab9
2012-05-09 18:45:20 -07:00
Dianne Hackborn
652b6d1e59 Add infrastructure for accessing "unstable" content providers.
We have an API and some stuff that purports to this, but no real
implementation yet.

Change-Id: I93555440014a50fdf79fa3f65318d90fb82265b4
2012-05-09 18:18:40 -07:00
Irfan Sheriff
9669a0ce57 Merge "API review fixes" into jb-dev 2012-05-09 14:04:04 -07:00
Irfan Sheriff
22af38c526 API review fixes
- Remove the notion of channel from an application perspective
- Remove the use of DnsSd as part of API and add a protocol type to allow
future extensions
- Use the listener object as a handler for stop and unregister operations. Also,
we now allow multiple active discovery operations.
- Remove init/deinit operations in favour of setting up construction

Bug:6434844
Change-Id: Id15521d571aac9c4053d81184ad66dfc54f636de
2012-05-09 11:48:42 -07:00
Adam Powell
5c43ec9328 Fix bug in TaskStackBuilder#addParentStack
Don't assume the initial component has a valid parent specified.

Bug 6464209

Change-Id: I22aa4c0e667ea85dc46ad7320f4a9f52117af520
2012-05-08 16:55:20 -07:00
Fabrice Di Meglio
92d7f9ff1c Merge "Fix bug #6408393 Character corruption is caused when locale is changed" into jb-dev 2012-05-08 10:54:41 -07:00
Adam Powell
ef31e7cab5 Fix for toggling menu item visibility outside of create/prepare menu
Allow applications to transition from 0=>1+ visible menu items outside
of onCreatePanelMenu/onPreparePanel. Previously, having 0 visible items
at this point would require an invalidation of the options menu.

Bug 6452605

Change-Id: I6cbfc46d0e5ec42b8d78ee516e9b57fdeaf1a890
2012-05-08 10:01:35 -07:00
Chris Wren
195ba5047c Merge "Clear out any existing buttons before adding the set of requested actions." into jb-dev 2012-05-08 07:34:12 -07:00
Chris Wren
2c22eb0a49 Clear out any existing buttons before adding the set of requested actions.
Bug: 6459557
Change-Id: Id19050e7280208d4f98c1aabe8087c6fe6c8d72a
2012-05-08 09:49:13 -04:00
Fabrice Di Meglio
30ca5cd11a Fix bug #6408393 Character corruption is caused when locale is changed
- free the TextLayoutCache on Locale change

- also free TextLayoutCache when memory is low

Change-Id: I39a37ac8ec3c292cfb1c0eea4bb41ff71897d089
2012-05-07 20:17:38 -07:00
Kenny Root
29bb27ef90 Merge "Add encryption parameters to package installation" into jb-dev 2012-05-07 18:41:27 -07:00
Adam Powell
e601efd375 Merge "Fix a bug in Activity Up navigation dispatching" into jb-dev 2012-05-07 17:40:09 -07:00
Adam Powell
07304f5299 Fix a bug in Activity Up navigation dispatching
Propagate the return value from onNavigateUp as the result of
onMenuItemSelected. This fixes a bug where the action bar Up nav
button clicks would not be propagated to support lib FragmentActivity
or other activity subclasses that rely on processing otherwise
unhandled onMenuItemSelected events.

Change-Id: Id879dd1756ed06b8a7b720ebf0eae2a8ddc66ca8
2012-05-07 17:32:44 -07:00
Anonymous Coward
ceb1b0bfae Add encryption parameters to package installation
Change-Id: Ic9f8ab9f8110f08bb3c00725cfce5b8ee7b766f3
2012-05-07 16:34:49 -07:00
Dianne Hackborn
8e11051a06 Merge "Tweak anim API to automatically call Intent.setSourceBounds()." into jb-dev 2012-05-07 16:12:44 -07:00
Dianne Hackborn
d367ca88ee Tweak anim API to automatically call Intent.setSourceBounds().
Also don't retain the source bounds in recent tasks, since it
has no meaning there and it would be better when relaunching an
activity to have a new bounds set based on wherever it is now
being launched from.

Change-Id: Ia90c04ee98a888a7f725b038abe23d71e2b12800
2012-05-07 15:54:58 -07:00
Dianne Hackborn
755c8bfbff Fix issue #6319312: Consecutive call to Activity's onCreate()/onResume()...
...without onPause() in between

There was a bug in the handling of "always finish activities" where we
would go through destroying activities while in the middle of updating
the activity stack.  This would result in the activity behind the
non-full-screen activity being created and then immediately destroyed,
which things were not expecting.

Change-Id: Idaa89089f7b1af7eb747d7b8f9f394beeb2d23fa
2012-05-07 15:06:09 -07:00
Daniel Sandler
fafce1f9f5 Merge "Add number back to legacy notifications." into jb-dev 2012-05-07 05:58:55 -07:00
Romain Guy
2db084fa95 Merge "Dialog not dismissed when tearing down dialog fragment." into jb-dev 2012-05-06 14:06:05 -07:00
Svetoslav Ganov
44bfdd88a7 Dialog not dismissed when tearing down dialog fragment.
1. The dismiss implementaton in Dialog was posting a message
   on the main thread to perform the real dismiss work. The
   goal of this was to allow calling dismiss() from multiple
   threads. The side effect of this is that when dialog fragment
   is dismissed the dialog is not dimissed until the current
   loop on the main thread is completed. However, during rotation
   of the screen the current activity has to be restarted, hence
   all fragments whould be removed. In the destruction process
   the dialog grament requests from the dialog to dismiss but
   since this is asynchromous, the code in
   ActivityThread#handleDestroyActivity detects a leaking window
   since the dialog window is still not removed and removes that
   window. Now when the dialog removal message is processed on
   the next loop we get an exception that the window has already
   been removed. Now if Dialog#dismiss() is called from the
   main thread the call goes right though otherwise a message is
   posted.

bug:5911682

Change-Id: I449d6dd75a84c0ff29ea13dac7d163219cc38341
2012-05-06 13:21:33 -07:00
Pin Ting
d0c66f6a8f Merge "Fix javadoc." into jb-dev 2012-05-06 07:12:02 -07:00
Romain Guy
5b972e730f Merge "Don't check whether dismiss() is called on the UI thread Bug #6436642" into jb-dev 2012-05-04 17:27:11 -07:00
Romain Guy
05e1c3a691 Don't check whether dismiss() is called on the UI thread
Bug #6436642

An app invoking dismiss() during a draw pass could cause crashes.
This change makes the code simpler too.

Change-Id: Iba89a8522e23d02f87697cfeec6cc713a1462669
2012-05-04 17:18:29 -07:00
Dianne Hackborn
6ad5b4f637 Merge "Fix issue #6426645: API REVIEW: android.app.ActivityOptions" into jb-dev 2012-05-04 16:10:16 -07:00
Chris Wren
3c5f924327 The BigTextStyle should never render mContentText
Change-Id: Ifcbb0868871741bd78c5ebf31408143aaf732b98
2012-05-04 13:32:18 -07:00
Chris Wren
d6297dbfe9 Add an alternate title that can be used in the overflow of a InboxStyle.
Always hide contentText for BigTextStyle and InboxStyle.
Style cannot be used without specialization, it should be abstract.

Bug: 6428978
Bug: 6274137
Bug: 6317471
Change-Id: I21531a94494f891a058a477805b177e736b921cf
2012-05-04 12:45:38 -07:00
Dianne Hackborn
ddc52a80b5 Fix issue #6426645: API REVIEW: android.app.ActivityOptions
Change-Id: If2f7b987e1825a8b0ebaf2c499924dfc1527274b
2012-05-04 12:04:40 -07:00
Daniel Sandler
b4b2223fa1 Add number back to legacy notifications.
Bug: 5816717
Change-Id: I52c98143378c315dec5b525cb3d96c214ee8196e
2012-05-04 13:31:33 -04:00
Chris Wren
e4a2a4f142 rework big text to handle gmail use case
Change-Id: I3175e198bd6f39025f4257454b43c459ed1e38f5
2012-05-03 09:40:02 -04:00
Chris Wren
fbd96ba9ba Allow the Notification.Builder to carry around a Style to apply at build
Change-Id: I5e848504b6d0444ee349ecea893ceae571dda796
2012-05-03 09:40:02 -04:00
Mike Cleron
841a37aa5b Merge "Clarify documentation about when Activity#onCreateNavigateUpTaskStack will be called." into jb-dev 2012-05-02 23:56:08 -07:00
Adam Powell
f019595151 Clarify documentation about when Activity#onCreateNavigateUpTaskStack
will be called.

Bug 6427237

Change-Id: I5c41e4a694b39c03fd642586472838e2f9a0281d
2012-05-02 21:39:31 -07:00
Jeff Sharkey
b829f09737 Merge "Allow adding of completed empty files." into jb-dev 2012-05-02 19:37:51 -07:00
Svetoslav Ganov
fb58a6d93c Merge "Adding title for the date picker dialog if the calendar is not shown." into jb-dev 2012-05-02 17:46:34 -07:00
Jeff Sharkey
33f95eda3d Allow adding of completed empty files.
Bug: 5281354
Change-Id: I375c3c7ff4ccbb554204ad53a90d35ff4790af6c
2012-05-02 17:07:54 -07:00
Jeff Sharkey
9a671137dc Merge "Set tmpdir to application cache directory." into jb-dev 2012-05-02 16:12:49 -07:00
Jeff Sharkey
e1d330a071 Set tmpdir to application cache directory.
Otherwise File.createTempFile() uses /sdcard which most apps don't
have write access to.

Bug: 6347289
Change-Id: Ibde191a63e4dbb9b03437406f8c999f192bcfa21
2012-05-02 13:47:37 -07:00
Adam Powell
35c064b2e8 Fix documentation of Activity#navigateUpTo() to describe its actual
behavior.

Change-Id: I804fcef5df6f5885b47b7a1c7703ed301bea09b0
2012-05-02 11:38:57 -07:00
Svetoslav Ganov
42c5cb3028 Adding title for the date picker dialog if the calendar is not shown.
1. The date picker dialog shows spinners and a mini calendar on
   tablet but on on phone the calendar is not show and the user
   does not know the day of the week otherwise show on the mini
   calendar.

bug:5264972

Change-Id: I06aeb7ba1ad34d4e99628d9586ff2777e981c963
2012-05-02 01:02:43 -07:00