diff --git a/projects/sample/source/sample-constant/src/main/java/com/tencent/shadow/sample/constant/Constant.java b/projects/sample/source/sample-constant/src/main/java/com/tencent/shadow/sample/constant/Constant.java index 8e340939f..198666098 100644 --- a/projects/sample/source/sample-constant/src/main/java/com/tencent/shadow/sample/constant/Constant.java +++ b/projects/sample/source/sample-constant/src/main/java/com/tencent/shadow/sample/constant/Constant.java @@ -28,4 +28,5 @@ final public class Constant { public static final int FROM_ID_NOOP = 1000; public static final int FROM_ID_START_ACTIVITY = 1002; + public static final int FROM_ID_CLOSE = 1003; } diff --git a/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java b/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java index 56c7297ed..091cd0b61 100644 --- a/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java +++ b/projects/sample/source/sample-host/src/main/java/com/tencent/shadow/sample/host/PluginLoadActivity.java @@ -87,6 +87,7 @@ public void onEnterComplete() { @Override protected void onDestroy() { super.onDestroy(); + HostApplication.getApp().getPluginManager().enter(this, Constant.FROM_ID_CLOSE, null, null); mViewGroup.removeAllViews(); } } diff --git a/projects/sample/source/sample-manager/src/main/java/com/tencent/shadow/sample/manager/SamplePluginManager.java b/projects/sample/source/sample-manager/src/main/java/com/tencent/shadow/sample/manager/SamplePluginManager.java index 929f06454..32284d229 100644 --- a/projects/sample/source/sample-manager/src/main/java/com/tencent/shadow/sample/manager/SamplePluginManager.java +++ b/projects/sample/source/sample-manager/src/main/java/com/tencent/shadow/sample/manager/SamplePluginManager.java @@ -80,6 +80,8 @@ public void enter(final Context context, long fromId, Bundle bundle, final Enter //do nothing. } else if (fromId == Constant.FROM_ID_START_ACTIVITY) { onStartActivity(context, bundle, callback); + } else if (fromId == Constant.FROM_ID_CLOSE) { + close(); } else { throw new IllegalArgumentException("不认识的fromId==" + fromId); } diff --git a/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/BasePluginManager.java b/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/BasePluginManager.java index f07b3759c..eafadd9f6 100644 --- a/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/BasePluginManager.java +++ b/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/BasePluginManager.java @@ -57,7 +57,7 @@ public abstract class BasePluginManager { /** * 插件信息查询数据库接口 */ - private InstalledDao mInstalledDao; + final private InstalledDao mInstalledDao; /** * UI线程的handler @@ -296,4 +296,11 @@ private boolean deletePart(InstalledPlugin.Part part) { public String getAbi() { return null; } + + /** + * 释放资源 + */ + public void close() { + mInstalledDao.close(); + } } diff --git a/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/installplugin/InstalledDao.java b/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/installplugin/InstalledDao.java index ef4f7bbdc..65a5ff6b0 100644 --- a/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/installplugin/InstalledDao.java +++ b/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/installplugin/InstalledDao.java @@ -34,7 +34,7 @@ public class InstalledDao { - private InstalledPluginDBHelper mDBHelper; + final private InstalledPluginDBHelper mDBHelper; public InstalledDao(InstalledPluginDBHelper dbHelper) { mDBHelper = dbHelper; @@ -171,7 +171,6 @@ public List getLastPlugins(int limit) { for (String uuid : uuids) { installedPlugins.add(getInstalledPluginByUUID(uuid)); } - db.close(); return installedPlugins; } @@ -218,4 +217,10 @@ private List parseConfig(PluginConfig pluginConfig, String soDir, } + /** + * 释放资源 + */ + public void close() { + mDBHelper.close(); + } }