From: Jason Monk Date: Thu, 1 Jun 2017 19:20:33 +0000 (-0400) Subject: Fix plugin reloading X-Git-Tag: android-x86-9.0-r1~1044^2~343^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1642d7f26bd7012db12eea59a4d9dd5ac34ff997;p=android-x86%2Fframeworks-base.git Fix plugin reloading Change-Id: I2209e98628b50416b910cda7ace10a06dbdceaa9 Test: manual Fixes: 38424850 --- diff --git a/packages/SystemUI/src/com/android/systemui/plugins/PluginManagerImpl.java b/packages/SystemUI/src/com/android/systemui/plugins/PluginManagerImpl.java index ec5f9e7eb6f5..493d244f5e99 100644 --- a/packages/SystemUI/src/com/android/systemui/plugins/PluginManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/plugins/PluginManagerImpl.java @@ -30,13 +30,13 @@ import android.content.res.Resources; import android.net.Uri; import android.os.Build; import android.os.Handler; -import android.os.HandlerThread; import android.os.Looper; import android.os.SystemProperties; import android.os.UserHandle; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; +import android.widget.Toast; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; @@ -166,7 +166,9 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage } if (!mPluginMap.containsKey(listener)) return; mPluginMap.remove(listener).destroy(); - stopListening(); + if (mPluginMap.size() == 0) { + stopListening(); + } } private void startListening() { @@ -237,7 +239,9 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage mContext.getSystemService(NotificationManager.class).notifyAsUser(pkg, SystemMessage.NOTE_PLUGIN, nb.build(), UserHandle.ALL); } - clearClassLoader(pkg); + if (clearClassLoader(pkg)) { + Toast.makeText(mContext, "Reloading " + pkg, Toast.LENGTH_LONG).show(); + } if (!Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) { for (PluginInstanceManager manager : mPluginMap.values()) { manager.onPackageChange(pkg); @@ -259,8 +263,8 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage return classLoader; } - private void clearClassLoader(String pkg) { - mClassLoaders.remove(pkg); + private boolean clearClassLoader(String pkg) { + return mClassLoaders.remove(pkg) != null; } ClassLoader getParentClassLoader() {