Symptom:
When switch between two home activities, the home process might not be updated to the correct one. In that case, the home activity might be killed easily.
Root Cause:
The home process is updated only when a home activity is newly created or being restarted. ActivityManager did not update the home process when simply resume a home activity.
Solution:
Update home process when home activity resumed
Reproduce Steps:
1. Install a launcher application, such as Apex Launcher
2. Press home key to change to Apex Launcher by "Just once" option
3. Press home key to switch back to original home activity by "Just once" option.
(The home process is still the Apex Launcher's process because ActivityManager does not update the home process when resuming the original home activity.)
Change-Id: I046279ca7ba851a283ee67ea19202890f7b3f343
The failing scenario is
- install v1
- run
- update to v2
- update to v3
- run
last run was failing with initial multidex library versions because
it's still running on v1 extracted secondary dex files.
(cherry picked from commit 05e2a94c8b510131f43a686f5188d4c0f2a5eebd)
Change-Id: Ibb5d16642b127ee4c0baddc4f6ba461c11d25f90
Symptom:
The root activity not always located at index 0 of the task.
For example, the index 1 activity will become the new root
when the original root activity (at index 0) finished.
The new root activity might be finished unexpectedly before
the original root activity actually destroyed.
Solution:
Check frontOfTask to avoid finishing the root activity unexpectedly
Change-Id: I623ab97e9c95c83b3cfe7c9dfc151a291a391ea4
Symptom:
In certain situations, application starts activity while
it is in background. When an existing background activity
starts a new activity which results to be kept in the same
background task, the new activity won't be resumed.
In that case, the background task (sourceTask) should not be
moved to top in window manager.
Solution:
Move top task of the target stack to top in window manager
Change-Id: Id7a37ea67ce1f80e0c2b5399865c51fd7113deb8
Replace locale.substring(0, 2) with a function that always
returns the first component of the locale (assumed to be the
language).
bug: 10090157
(cherry picked from commit cefc79c6b18bb2e824c299e7b9e212071e5ebc43)
Change-Id: I56b02dd0c6dc222daa3ceade841a30879449bb4a
The logging is LocalTransport.java is enabled by
default.
Change default to false to remove logs, as this class
states that it is only for debug.
Change-Id: Iae63c7b62edbd503c606f0aee671a9579e78843d
Sympton:
When application crash in a special timing and system server's InputMethodManager is binding, deadlock may occur.
Root Cause:
Thread(1): When using InputMethodManager in system server, it will lock mH(handler) of InputMethodManager,
and sometimes it will call to InputMethodManagerService::showCurrentInputLocked and will call bindService at some condition,
then it will also lock ActivityManagerService.
Thread(2): When an application crashed, it will lock ActivityManager when showing crash dialog, inside the dialog,
it will call setEnabled of Button and lock mH of InputMethodManager.setEnable of TextView will lock IMM's handler.
So the deadlock happened as the flow: (2) lock AMS -> (1)lock mH -> (2)wait mH -> (1) wait AMS
Solution:
Reduce nested lock of error dialog: post message to let (2) lock mH after release AMS lock.
Change-Id: Id85c29406236db3b5fca9655fde1fcaf0afd1337
We should call ResourceTable::getLocales directly,
and not AssetManager::getLocales. The latter will convert
"tl" to "fil" so we'll end up thinking we have resources
for "fil" when we don't really have any.
bug: 15873165
Change-Id: I9753e4608aaecede328a40ee1f3ee6b016d0dedc
Symptom: SkBitmap::getAddr(int, int) may return NULL due to unrecognized config
(ex: kRLE_Index8_Config). This will cause memcmp method to crash. Since bm0 and
bm1 both have pixel data() (have passed NULL == getPixels() check), those 2
bitmaps should be valid (only unrecognized), we return JNI_FALSE to warn user
those 2 unrecognized config bitmaps may be different.
Change-Id: I6970c27de412110a3035d0a783112c4cd3ebc35b
Symptom: Invisible views are still shown in popup window
Root Cause: glClear isn't called if there is no draw command
Solution: Even if there is no draw command, it still calls glClear
by startFrame().
Reproduce steps: App set one view in a popup window to invisible,
it will be still visible.
Change-Id: I36bc7b752434ad388fbb80ea63341ac778f48d35
Symptom: If app applies animation to enlarge a bitmap, there will be an residual
line on the screen
Root Cause: On platform which has Tile Rendering implementation (ex. Qualcomm
CPU), startTiling() call will restrict the framebuffer region which
GPU can affect. So the expansion of clear region by 1 will not take
effect if startTiling region is not expanded.
Solution: Expand the startTiling region by 1, too.
Reproduce steps: Apply animation to enlarge (and then shrink) a bitmap icon.
Change-Id: I7b4a59e180daa29dbe909d9e11f4093ae1d7396f
AudioTrack and AudioRecord JNI should not cast
jshortArray to jbyteArray. This appeared to work with Dalvik
but causes data corruption with ART.
(cherry picked from commit 9d02848e902d04417df616354db3a18c03e639b7)
Change-Id: Ie36624d3ea06042373c64edced4b5e30b7b1ee86
This was broken by commit b27c137087ee92674 which
removed a badly phrased check. Prior to that commit,
there was a check that excluded locales whose toString()
length was not 5.
This change reinstates that check in a less roundabout
way, by excluding BCP-47 tags that don't have a country
subtag.
bug: 16038949
Change-Id: Ic24b1df87b2e2ce47d9ae04c7759088721f27b4f