多个插件共享同一进程的问题

多个插件共享同一进程,这样会存在比较严重的问题:

假如其中一个插件应用发生异常,这样会导致整一个进程被杀,那么所有被加载的插件应用都回被退出,假如外面使用者不知道的这个情况下,直接调用时会导致

对应的类等都会找不到。

因此,在添加应用时,需要保留加载应用的信息,这边的信息全部放到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


这样我们就可以恢复异常被杀时的所有插件的加载的工作了。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值