It turns out that the performance of
InputMethodManager#getCurrentInputMethodSubtype() is regressed from ~1ms
to ~20ms when
- Settings.Secure.SELECTED_INPUT_METHOD_SUBTYPE == -1 and
- The active IME supports many subtypes (~100)
because we try to find a fallback subtype based on the system locales
every time when IMM#getCurrentInputMethodSubtype() is called.
This could be contributing UI janks because spell checker clients
running in the UI thread indirectly depend on that method.
Fortunatelly the critical path is in
InputMethodUtils#getImplicitlyApplicableSubtypesLockedImpl(), which is
basically a state-less method. We can easily and safely cache its
result by using LocaleList and InputMethod as cache keys.
With this CL the performance basically recovers to the Android M level.
Bug: 28889203
Change-Id: I5ed16c7f14cc18052854f4fd6c9bae8550c332ee
Fixes a particularly bad transition in the case where there
is one incoming message to a group.
Change-Id: Ieddece4a496292a69e14cdcd74d94986938d8223
Fixes: 29043489
When app is resized in multi-window mode we preserve the window along
with the decor view. If action mode view was shown before such config
change, its view is detached, but the mPrimaryActionModeView variable
is not cleared. So when action mode view is shown again after that it
thinks that its view is still alive.
This CL adds additional check to inflate new mPrimaryActionModeView
if it is not attached to any window.
Bug: 28971666
Change-Id: Ia8c24d4322be32e8b2c8967301beb3a4d889d501
Also moves discharge coulomb data to BATTERY_DISCHARGE_DATA checkin line.
Bug:29264326
Bug:28743761
Change-Id: I78881e166c11f40b2397e04d2cab8d5200c71eea
For devices that report battery discharge via a coulomb counter,
record how much of the battery was discharged while the screen
was on/off.
Bug:28743761
Change-Id: Ie2d1708864352029ff466c1fed14fc057e19b93b
Un-reverts ag/1057448, but uses a version of Resources#getText
that returns null rather than throw an exception when no title
is available. This is the same call made before, so this change
should be safer.
Bug: 28744278
Change-Id: I8c123f4f6d74f796ab9e8ffcf955aaf881770da1
If the system_server crashes, when it starts back up
it will assume that the entries in kernelUidCpuTimeReader
are all fresh and we will end up double counting cpu time
and power.
Bug:29163081
Change-Id: I73e693199c170229af57efd610950e90263ac9bc
Have FastPrintWriter note all cases where an exception is
thrown, and stop trying to push more data into the output
stream when this happens.
Change-Id: I51a1eeb26578f02b2a6f45ef7bc2513dfde702a2
Currently if an action mode is started in onCreate()
it will fade in. This isn't ideal though, especially
since Activities are recreated routinely with
multi-window and resizable Activities. In that instance
we fade it in on every recreate.
This CL fixes this in both the decor and toolbar action
modes to only fade in if the decor has been laid out.
BUG: 29036694
Change-Id: Iae985efcced170a0a4229124c1c132355c2aa71e
To avoid screen garbage or wallpaper shining through, the background
we use there for filling the whole needs to
a) Be non-translucent in all cases except if the window is translucent.
b) Don't infer it from the theme as it might be unexpected. Don't define
it in the theme, and use black if it's not defined.
Bug: 28763785
Change-Id: Ifb724b5c5feea3ed70d68e5bd7615fa91185e743
Add an extra parameter to LocaleHelper.getDisplayLocaleList()
specifying the maximum number of locales to output, as callers
probably won't need the whole list.
Bug: 28872122
Change-Id: Ief136bc1af2841e76ed4d8e65932a9a30821eae3
If the batterystats were reset while the device was
idling (via command line most likely), then also reset the
last time the device started idling so that the max idle time
calculation is correct.
Bug:28452600
Change-Id: I8a3d5dc3081deda76356c03d891e098baa85f88a
Before resetKeyStore(), it will back up child profile keys,
and will be restored after primary profile keystore is cleared.
Bug: 28878708
Change-Id: I0cb4a1f885d468894bc7eb95af694328bf92ce16
Read time and I/O for OTA update from last_install, and report the
statistics using MetricsLogger.histogram.
Bug: 28658632
Change-Id: I7fd06a82cbabd346d6d44f81ebad08f6baf4b8d0
This data tells us the number of pages of each type that
are available by page size. It is collected each time
the procstats snapshot is taken, and printed in the
checkin and verbose (dumpsys procstats -a) modes.
Change-Id: I14562eac15833617391c560638a9e7d239ef8db6
We handled stale wakelocks (wakelocks that disappear from /d/wakeup_sources)
differently in previous version of Android. They would be set stale, but still be
updated with their previous counts (they would never disappear).
The method setStale has been replaced with endSample(), which is semantically different.
Once a SamplingTimer has endSample() called, it expects any future calls to update() to
be a new sample, meaning the entire amount passed to update() is included in the kernel
wakelock's total. Since stale wakelocks were never removed from the list, this would
increase by large amounts when nothing had actually changed.
This was exacerbated by the fact that there was a bug where the last wakelock in
/d/wakeup_sources was never parsed, so if the order ever changed, this "stale" wakelock
would suddenly re-appear and the entire amount reported would be charged to the wakelock,
instead of just the difference since the last update.
All this was exposed when we added support to handle wakelocks that would disappear and
reappear with smaller values, meaning the kernel had pruned them from its accounting and
reset them.
Bug:28601080
Change-Id: Ic96027f7d580dac5e20aa73d67e5cedac4ccabeb
When a null window background is set, we want to use the
fallback drawable for resizing.
Bug: 28801472
Change-Id: Ia616d7aa18b0d7aa2c7081a85ce7551ecfeca5b3
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
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
(cherry picked from commit 41c9dc3b69)
Change-Id: I48e4d57ecbb207b9a5e17b6caf5e7b282e4a40e3