Loading core/java/android/app/LoadedApk.java +12 −3 Original line number Diff line number Diff line Loading @@ -458,8 +458,14 @@ public final class LoadedApk { } } final List<String> zipPaths = new ArrayList<>(); final List<String> libPaths = new ArrayList<>(); // Lists for the elements of zip/code and native libraries. // // Both lists are usually not empty. We expect on average one APK for the zip component, // but shared libraries and splits are not uncommon. We expect at least three elements // for native libraries (app-based, system, vendor). As such, give both some breathing // space and initialize to a small value (instead of incurring growth code). final List<String> zipPaths = new ArrayList<>(10); final List<String> libPaths = new ArrayList<>(10); makePaths(mActivityThread, mApplicationInfo, zipPaths, libPaths); final boolean isBundledApp = mApplicationInfo.isSystemApp() Loading Loading @@ -495,8 +501,11 @@ public final class LoadedApk { /* * With all the combination done (if necessary, actually create the java class * loader and set up JIT profiling support if necessary. * * In many cases this is a single APK, so try to avoid the StringBuilder in TextUtils. */ final String zip = TextUtils.join(File.pathSeparator, zipPaths); final String zip = (zipPaths.size() == 1) ? zipPaths.get(0) : TextUtils.join(File.pathSeparator, zipPaths); if (ActivityThread.localLOGV) Slog.v(ActivityThread.TAG, "Class path: " + zip + Loading core/java/android/text/TextUtils.java +5 −6 Original line number Diff line number Diff line Loading @@ -309,14 +309,13 @@ public class TextUtils { */ public static String join(CharSequence delimiter, Iterable tokens) { StringBuilder sb = new StringBuilder(); boolean firstTime = true; for (Object token: tokens) { if (firstTime) { firstTime = false; } else { Iterator<?> it = tokens.iterator(); if (it.hasNext()) { sb.append(it.next()); while (it.hasNext()) { sb.append(delimiter); sb.append(it.next()); } sb.append(token); } return sb.toString(); } Loading Loading
core/java/android/app/LoadedApk.java +12 −3 Original line number Diff line number Diff line Loading @@ -458,8 +458,14 @@ public final class LoadedApk { } } final List<String> zipPaths = new ArrayList<>(); final List<String> libPaths = new ArrayList<>(); // Lists for the elements of zip/code and native libraries. // // Both lists are usually not empty. We expect on average one APK for the zip component, // but shared libraries and splits are not uncommon. We expect at least three elements // for native libraries (app-based, system, vendor). As such, give both some breathing // space and initialize to a small value (instead of incurring growth code). final List<String> zipPaths = new ArrayList<>(10); final List<String> libPaths = new ArrayList<>(10); makePaths(mActivityThread, mApplicationInfo, zipPaths, libPaths); final boolean isBundledApp = mApplicationInfo.isSystemApp() Loading Loading @@ -495,8 +501,11 @@ public final class LoadedApk { /* * With all the combination done (if necessary, actually create the java class * loader and set up JIT profiling support if necessary. * * In many cases this is a single APK, so try to avoid the StringBuilder in TextUtils. */ final String zip = TextUtils.join(File.pathSeparator, zipPaths); final String zip = (zipPaths.size() == 1) ? zipPaths.get(0) : TextUtils.join(File.pathSeparator, zipPaths); if (ActivityThread.localLOGV) Slog.v(ActivityThread.TAG, "Class path: " + zip + Loading
core/java/android/text/TextUtils.java +5 −6 Original line number Diff line number Diff line Loading @@ -309,14 +309,13 @@ public class TextUtils { */ public static String join(CharSequence delimiter, Iterable tokens) { StringBuilder sb = new StringBuilder(); boolean firstTime = true; for (Object token: tokens) { if (firstTime) { firstTime = false; } else { Iterator<?> it = tokens.iterator(); if (it.hasNext()) { sb.append(it.next()); while (it.hasNext()) { sb.append(delimiter); sb.append(it.next()); } sb.append(token); } return sb.toString(); } Loading