History log of /frameworks/base/core/java/android/net/ConnectivityThread.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
c4fe5d373caa9f53686e4d58e61394dd40558957 13-Oct-2016 Hugo Benichi <hugobenichi@google.com> ConnectivityThread: use lazy holder idiom

This patch changes the way that the ConnectivityThread is lazily
instantiated by using the "lazy initialization holder class idiom".

The first code point that tries to obtain a reference to the unique
ConnectivityThread instance will trigger the creation of the Singleton
class, which will guarantee a thread-safe initialization of the static
INSTANCE field inside Singleton according to the language specs.

This is the Item #71 of Effective Java.

The unique static instance of ConnectivityThread is not stored directly
inside ConnectivityThread class but is stored in a static nested class.
This is to avoid triggering the creation of that unique instance when
Zygote does class preloading at phone startup. Otherwise this would lead
to Zygote creating a new OS thread during preloading, which is a fatal
error.

Test: frameworks-wifi tests pass
Bug: 26749700
Bug: 28537383
Bug: 32130437

Change-Id: I4d5672a3195d3af9a0a2c85f871695257abe782b
/frameworks/base/core/java/android/net/ConnectivityThread.java
74fc3bfc009f736d058797e9ddda500d114e3135 16-Mar-2016 Paul Stewart <pstew@google.com> Create ConnectivityThread

Create a common singleton thread to be shared among all
connectivity tasks. Instead of launching separate threads to
handle downstream messages from the various service instances used
in connectivity, these managers can choose to share this instance.

Bug: 27695292

Change-Id: Idd1e37a3e793c5485091509c3d7351e4d29288f0
/frameworks/base/core/java/android/net/ConnectivityThread.java