Instead of in activity thread. That way, we can warm up (ie,
precompute cached values) this provider and AndroidBCWorkaroundProvider
(which are installed together) so that the computation doesn't
happen in the app. As a result, the time spent in the first call to
SSLSocketFactory.getDefault() decreases by ~5ms in angler userdebug.
Measured with an app calling SSLSocketFactory.getDefault in onCreate
and timed it with System.currentTimeMillis() .
Bug: 28545496
Change-Id: I73284eccdf6d51dbf55206335d759ccf795c5f41
am: c724f2207f
* commit 'c724f2207f9186f25eeac5b2131e469dafb3bc90':
Add support for ICU data pinning in the Zygote
Change-Id: I2c14d6dad84ed2bf5d6186ab795d54184bb483cb
am: 8491b4c05d
* commit '8491b4c05d35b15e0a4c1a0ef2396cbb7169698a':
Add support for ICU data pinning in the Zygote
Change-Id: I64ba8a96ab8990a051a68cbdb35f4b1de3738d09
am: 9b1d64410d
* commit '9b1d64410dfddc38ade15d1581de2c89ad79948a':
Add support for ICU data pinning in the Zygote
Change-Id: I53a2d5f885df5cf633a4a63cb2e3c2bc5c75959e
Upstream ICU caches use SoftReferences. On Android this means
that useful cached data initialized in the Zygote are "lost" when
the Zygote GCs and cannot be shared with apps. This change makes use
of an Android patch to ICU to ensure References created during
Zygote initialization are "strong". i.e. they are never collected.
This prevents them being GCd and ensures they can be shared between
applications.
After switching ICU to use strong references, this change
also creates DecimalFormatSymbols objects for common ULocales
(ROOT, US and the user's default, if different). DecimalFormatSymbols
makes use of an ICU Reference cache and this alone has been shown to
improve the construction time of java.text.DecimalFormat by 1-1.5
milliseconds on a Seed device. This saving applies the first time one
is created in each app for each locale, and again if SoftReferences
have been cleared.
The cost to the heap size of the Zygote has been measured at ~107k.
This value will change as more caches are switched to use the new
CacheValue class.
Formatting is typically performed on the UI thread and the intention
of this change is to reduce app start up time and jank in apps like
the Dialer which do a lot of formatting when scrolling lists. The
change may also enable more virtual memory page-sharing between
apps, though this is not the specific goal.
Bug: 28326526
Change-Id: Ia2c73f6525f05b1aa81e57a31eed1616decf6bb5
am: 6b10cec210
* commit '6b10cec2108746e15388125fdd6fa0cbfd6cb28d':
Demote the log in ProcessState.ensureNotDead from a wtf to a warning.
@hide SystemHealthManager.from
Change-Id: Ifc94199cc5ad69af73871cc012aa2dac31b6f67b
am: 45165c9373
* commit '45165c9373f1bf2dbe0c3f11b271daa24414ea35':
Demote the log in ProcessState.ensureNotDead from a wtf to a warning.
@hide SystemHealthManager.from
Change-Id: Id56c7ee80254eac26132956ef62b83c405a0e2f8
Since LocaleList needs to depend on android.os.Parcelable, we cannot let
that class belong to "android.util" package, which causes layering
violation.
Bug: 28819696
Change-Id: Ia8de2ee9df3dd0a42b1fe84574439519b680fe18
We can't use the same instance on both the main and the background
thread, as this will lead to problems.
Change-Id: Ieec525f028df2d0596667126d8f5004773461517
Fixes: 28745682
It's raising alarm bells but there isn't much we can do without a lot
of rewriting inside the ActivityManager. The only consequence is stats
that are off by a little bit.
Bug: 28581070
Change-Id: If51568c3a708a907ceef6452e7d45599a57454f7
The method warmUpJcaProviders arrived here from both nyc-dev
and aosp/master, removing duplication.
(cherry picked from commit 57b8a73d0e)
Change-Id: Idbb046ae47d608343ffb5cbf2df8e0c00920c909
The method warmUpJcaProviders arrived here from both nyc-dev
and aosp/master, removing duplication.
Change-Id: I2d91ee38fe93f600bec89651416e84ab83ef9d4a
This makes the time spent in the first call of an app to
SSLSocketFactory.getDefault() drop from ~240 ms to ~50 ms. In M
it was around ~6ms. This is due to the fact that, while instantiating
the default factory, all providers are initialized.
In order to obtain the timings above, I created an app calling
SSLSocketFactory.getDefault in onCreate and timed it
with System.currentTimeMillis() .
(cherry picked from commit 6cb7b1c476)
Bug: 28545496
Change-Id: Ic5aab3ece609d9fef06fee4ccb83d8371af075b2
This makes the time spent in the first call of an app to
SSLSocketFactory.getDefault() drop from ~240 ms to ~50 ms. In M
it was around ~6ms. This is due to the fact that, while instantiating
the default factory, all providers are initialized.
In order to obtain the timings above, I created an app calling
SSLSocketFactory.getDefault in onCreate and timed it
with System.currentTimeMillis() .
Bug: 28545496
Change-Id: I650d4b0435e67e481a41e02b0b538ce5cc993fa3
am: 4f968024f4
* commit '4f968024f4822155e8428b9e5d8aea3114687412':
Ensure app op restrictions reset when the app that set them dies.
Change-Id: Ia7acd68dfd29d855e26f11a36e04dde153055d62
am: 008d73bd5b
* commit '008d73bd5b3ca4b1b7a8af61957759d65dd67e3b':
Ensure app op restrictions reset when the app that set them dies.
Change-Id: I177256a7f65b3f5c98e5ddc5cf57a7cb47c965ab
am: 008d73bd5b
* commit '008d73bd5b3ca4b1b7a8af61957759d65dd67e3b':
Ensure app op restrictions reset when the app that set them dies.
Change-Id: Iebbe27690aeac898807c13ef05c730697dbb406a
We were not keeping track when an app that set an app op restriction
dies to clean up after that. As a result we may end up with stale
restrictions that will be there until the device reoots - not cool.
This change adds remote binder death tracking and simplifies the
code as adding the formed would have made more complex.
bug:28770536
Change-Id: I7dcaafba2354843a0cdf0206ab1f96625edc5120
Was missing a content description. The same button is used for
both opening and closing the toolbar, so it needs to be updated
dynamically.
Bug: 28750935
Change-Id: I7f75701ae6af45e5621c36b81003b658479e8b31