OSDN Git Service

parallel preload class
authorZhang Gary <gary.zhang@intel.com>
Sun, 22 Nov 2015 08:18:31 +0000 (16:18 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Wed, 20 Jul 2016 09:53:21 +0000 (17:53 +0800)
To parallel class preload with resource preload

Change-Id: I35498f6401f41413974fa2608ac00170a0585034
Tracked-On: https://jira01.devtools.intel.com/browse/OAM-10387
Depends-Change-Id: Ia82cc53534d4140599530e6a58a8f7a5cd09d645
Reviewed-on: https://android.intel.com:443/439031

core/java/com/android/internal/os/ZygoteInit.java

index 59283bb..66e7013 100644 (file)
@@ -179,7 +179,17 @@ public class ZygoteInit {
 
     static void preload() {
         Log.d(TAG, "begin preload");
-        preloadClasses();
+        Thread classPreload = null;
+        if (true) {
+            classPreload = new Thread() {
+                public void run() {
+                    preloadClasses();
+                }
+            };
+            classPreload.start();
+        } else {
+            preloadClasses();
+        }
         preloadResources();
         preloadOpenGL();
         preloadSharedLibraries();
@@ -187,6 +197,11 @@ public class ZygoteInit {
         // Ask the WebViewFactory to do any initialization that must run in the zygote process,
         // for memory sharing purposes.
         WebViewFactory.prepareWebViewInZygote();
+        try {
+            if (classPreload != null)
+                classPreload.join();
+        } catch(InterruptedException ex) {
+        }
         Log.d(TAG, "end preload");
     }