多个插件共享同一进程,这样会存在比较严重的问题:
假如其中一个插件应用发生异常,这样会导致整一个进程被杀,那么所有被加载的插件应用都回被退出,假如外面使用者不知道的这个情况下,直接调用时会导致
对应的类等都会找不到。
因此,在添加应用时,需要保留加载应用的信息,这边的信息全部放到Intent中,因此,可以保留intent的信息;其中Android已经提供对应的接口:
public void saveIntent(Intent intent) {
mSharedPrefs.edit().putString(SOME_KEY, intent.toURI()).commit();
}
public Intent restoreIntent() {
String uri = mSharedPrefs.getString(SOME_KEY, *mSomeDefaultUri*);
return Intent.getIntent(uri);
}
引用:http://stackoverflow.com/questions/2812650/any-workaround-to-save-an-intent-in-settings
而在恢复异常前所有加载的应用时,我们只需要从这个sharepref中获取所有的存储的内容:
Map<String, ?> allEntries = prefA.getAll();
for (Map.Entry<String, ?> entry : allEntries.entrySet()) {
Log.d("map values", entry.getKey() + ": " + entry.getValue().toString());
}
引用:http://stackoverflow.com/questions/22089411/how-to-get-all-keys-of-sharedpreferences-programmatically-in-android
这样我们就可以恢复异常被杀时的所有插件的加载的工作了。。。