OSDN Git Service

Avoid static initialization of Layout from TextUtils
authorNeil Fuller <nfuller@google.com>
Fri, 6 Feb 2015 10:03:08 +0000 (10:03 +0000)
committerNeil Fuller <nfuller@google.com>
Fri, 6 Feb 2015 17:34:37 +0000 (17:34 +0000)
commitd950ad034ceeec0024bc299b542d2b6154ac4dd3
treea6ff84debf74c4e4ca0141411cfcd3761e3cab4e
parentc565a5675ac33d97d5c1caed7a5629412997fb4a
Avoid static initialization of Layout from TextUtils

This works around a bug in standalone (e.g. non-Zygote)
runtimes when a device is attached to a host that is running
DDM.

There is a race condition:

When the runtime receives a HELLO from DDM it calls
TextUtils.isEmpty().

Calling any TextUtils methods statically initializes
Layout. Layout has dependencies on other classes, which in
turn have dependencies on native methods that are not always
registered when the call takes place. Registration and DDM
handling are done in separate threads.

This is not a fix, merely a workaround until the race can
be resolved.

Bug: 18081539
(cherry-picked from commit d29bdb266d54b4551f42776bb790e80147a279d0)

Change-Id: Id0d8578eab9e59d479a7c1b2e7ea1890ac0c8de6
core/java/android/text/Layout.java
core/java/android/text/StaticLayout.java
core/java/android/text/TextUtils.java