...Invalid index 0, size is 0 at
android.app.ActivityThread.performPauseActivity(ActivityThread.java:2326)
It looks like if an arrow key is dispatched between the time the
list view is told its data set has changed and it does the resulting
layout pass, we could try to move the position to a now invalid
index. This may prevent that from happening.
Also put in a better error message if saving state of a fragment
whose target is no longer in the fragment manager.
And fix a bug in PackageManager where we could return a null from
queryIntentActivities().
And add a new API to find out whether a fragment is being removed,
to help fix issue #3306021: NPE at
android.app.AlertDialog.getDefaultDialogTheme(AlertDialog.java)
Next, for new HC apps we can delay committing data to
storage until the activity is stopped.
Finally, use the new multi-threaded AyncTask executor in a few
places, so we don't have worked blocked by long-running tasks from
the application.
Change-Id: I27b2aafedf2e1bf3a2316309889613fa539760f3
* Define Base64DataException
* Throw it from Base64InputStream & Base64OutputStream
* This enables callers to disambiguate "bad data" from "broken stream",
which makes it more possible to do proper retry logic.
Bug: 3365205
Change-Id: I332e7c008f92b333400d1b4dcaef5aedc7c10ef4
As discovered by jpa@, previously it was only in logcat -b events, not
-b main, which people don't typically watch.
Bug: 2964398
Change-Id: Id672dd936f1678dd347158428b0ca03e4ad1e2d4
Previously we relied on Double.parseDouble() to decode tokens. Since
that method is expensive, we deferred calling it unless absolutely
necessary.
Now we decode the literal type immediately. For efficiency we decode
the token right out of the char buffer. This makes things more
complicated but it saves many calls to charAt().
With this change overall performance is 7% faster for JSON documents
cited in the bug.
benchmark run ms linear runtime %
GsonParseFull no switch, no int parse 309 ============================ 93%
GsonParseFull baseline 330 ============================== 100%
http://b/3201883
Change-Id: I436b6769956b1357a17c807a327d3a234691c73f
An IOException is a recoverable condition, and AssertionError should be
used for non-recoverable conditions.
Fixes b/3169361
Change-Id: Ie71a537293e01ffb49c5f535412e2631e27c84c8
This is used to allow list view's pressed and activated indicators
to fade in an out, though of course it can be used elsewhere as well.
There is a lot of complexity in supporting this in list view. The
two main things that are being dealt with:
- When recycling views, we need to make sure that the view's drawable
state doesn't get animated from an old row's state. The recycler
now keeps track of which position a view was last in, and if it is
reused at a new position there is a new View/Drawable API to tell
it to jump to its current state instead of animating.
- For the pressed indicator to fade out, we need to keep displaying it
after it is hidden. There are new variables and code to keep track
of this state, and tweaks in various places to be able to remember
the last selected position and continue updating the drawable bounds
as needed.
Change-Id: Ic96aa1a3c05e519665abf3098892ff2cc4f0ef2f
Merge commit '277465fb5bfc74716f194f1abc2befb42ed73590'
* commit '277465fb5bfc74716f194f1abc2befb42ed73590':
b/3054044 Make allDay event times format in utc
AllDay events could get formatted with the local time zone
instead of utc. This makes it so that using the utc flag in the
wrapper for formatting correctly passes in UTC as the time zone.
Change-Id: I65090ef939ce64c1a942c7683cf76a927c02cb53
Merge commit 'f78fdaccde379d1c101be137416808ea62a2f292'
* commit 'f78fdaccde379d1c101be137416808ea62a2f292':
Fix problem where Base64InputStream single-byte reads were unsigned.
We were creating a static AsyncQueryHandler which only held a
weak reference to the content resolver. This caused db updates
to be dropped once the original context had been gc'd. This
fix creates a new handler for each update to ensure we have a
valid resolver.
Change-Id: I049d8390ac0215e12e63d57b0bae4d3f6df64b6a
Merge commit '86e1991428c2bc78354965c51b2821ae16f32a55'
* commit '86e1991428c2bc78354965c51b2821ae16f32a55':
Adds time zone functionality into fw as a hidden api
TimeZoneUtils was updating the db and modifying the selection. This
creates a static selection for each update type and creates new
values for each update. Also adds a method for apps to force the
local tz cache to refresh if they think another app has modified
the db.
Change-Id: Iaaade635ac8ff11bb116005a0f6b44efcd4c4056
This is the start of work towards pushing api that is needed for
Calendar to become unbundled into frameworks. This adds functions
for getting and setting time zones for the Calendar app. The new
methods are currently hidden.
Change-Id: I1b4265b23630c46d9730a179ec02da8d6c0e03ea
Merge commit '2e47052fc4ad3439adc2322fd953fd58a85d457c'
* commit '2e47052fc4ad3439adc2322fd953fd58a85d457c':
Fix problems with determining when to kill apps for wake usage.
- Introduce FragmentManager public API, for all Fragment management
needs. Will in the future allow the removal of the (growing number
of) fragment APIs on Activity.
- Fragment now has a concept of arguments. This can be supplied
immediately after creation, and are retained across instances.
- PreferenceActivity now has an API to have it update its headers (note
not tested). Headers now have arguments. Keys for controlling
when PreferenceActivity shows at launch have been added to the SDK.
- Fixes to back stack handling and state saving/restoring.
Change-Id: Ib9d07ae2beb296c4eb3a4d9e1b3b59544675e819
This change also removes the use of SoftReferences for View's
drawing cache.
A bitmap now creates a PhantomReference enqueued in a reference
queue provided by the new Finalizers class. This queue is polled
from a thread started after forking zygote. That thread is in charge
of clearing the references after GC runs and of calling reclaim()
on them. The reclaim() method is now how finalizers are run.
Note that a PhantomReference cannot be kept in the instance it
refers to, which is why they are kept in a separate List.
Change-Id: If3c1a5e9dc23fa49e34857860d730f5cf5ad5926
Introduces a new LoaderManager class that takes care of
most of what LoaderManagingFragment does. Every Fragment
and Activity can have one instance of this class. In the
future, the instance will be retained across config changes.
Also various other cleanups and improvement.
Change-Id: I3dfb406dca46bda7f5acb3c722efcbfb8d0aa9ba
Note: this change doesn't solve the Arabic country code top level domains, which
was turned on today. For that, more changes need to be done; probably we need a way
to convert the BiDi url to punycode first; then apply this URL pattern.
issue: 2663885
Change-Id: I0597fe620c4d44259bff88ecfcbcca1565928c6f
Note: this change doesn't solve the Arabic country code top level domains, which
was turned on today. For that, more changes need to be done; probably we need a way
to convert the BiDi url to punycode first; then apply this URL pattern.
issue: 2663885
Change-Id: Iac5d16bf9e091a072a59f8244ab6e87940badd4f