diff --git a/core/java/com/android/internal/app/ProcessStats.java b/core/java/com/android/internal/app/ProcessStats.java index 4995ea1d1e5b3..a92cb74f05a38 100644 --- a/core/java/com/android/internal/app/ProcessStats.java +++ b/core/java/com/android/internal/app/ProcessStats.java @@ -3570,6 +3570,10 @@ public final class ProcessStats implements Parcelable { return mOwner != null || mRestarting; } + public boolean isRestarting() { + return mRestarting; + } + void add(ServiceState other) { addDurations(other); mRunCount += other.mRunCount; diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 34d7cb37cb614..1b49029723eb6 100755 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -895,6 +895,11 @@ public final class ActiveServices { while (clist.size() > 0) { ConnectionRecord r = clist.get(0); removeConnectionLocked(r, null, null); + if (clist.size() > 0 && clist.get(0) == r) { + // In case it didn't get removed above, do it now. + Slog.wtf(TAG, "Connection " + r + " not removed for binder " + binder); + clist.remove(0); + } if (r.binding.service.app != null) { // This could have made the service less important. diff --git a/services/core/java/com/android/server/am/ProcessStatsService.java b/services/core/java/com/android/server/am/ProcessStatsService.java index 7ec14c295bd61..28e46a4515bf0 100644 --- a/services/core/java/com/android/server/am/ProcessStatsService.java +++ b/services/core/java/com/android/server/am/ProcessStatsService.java @@ -146,7 +146,9 @@ public final class ProcessStatsService extends IProcessStats.Stub { final ArrayMap services = pkg.mServices; for (int isvc=services.size()-1; isvc>=0; isvc--) { final ProcessStats.ServiceState service = services.valueAt(isvc); - if (service.isInUse()) { + if (service.isRestarting()) { + service.setRestarting(true, memFactor, now); + } else if (service.isInUse()) { if (service.mStartedState != ProcessStats.STATE_NOTHING) { service.setStarted(true, memFactor, now); } @@ -157,7 +159,6 @@ public final class ProcessStatsService extends IProcessStats.Stub { service.setExecuting(true, memFactor, now); } } - } } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 5a94f23f00543..a61d62180e14c 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5589,9 +5589,11 @@ public class PackageManagerService extends IPackageManager.Stub { // update the package settings accordingly. pkg.cpuAbiOverride = cpuAbiOverride; - Slog.d(TAG, "Resolved nativeLibraryRoot for " + pkg.applicationInfo.packageName - + " to root=" + pkg.applicationInfo.nativeLibraryRootDir + ", isa=" - + pkg.applicationInfo.nativeLibraryRootRequiresIsa); + if (DEBUG_ABI_SELECTION) { + Slog.d(TAG, "Resolved nativeLibraryRoot for " + pkg.applicationInfo.packageName + + " to root=" + pkg.applicationInfo.nativeLibraryRootDir + ", isa=" + + pkg.applicationInfo.nativeLibraryRootRequiresIsa); + } // Push the derived path down into PackageSettings so we know what to // clean up at uninstall time.