动态加载第三方activity笔记(1)--加载三方页面

最近一直没有写博客,本着罪恶感,写一篇吧。

这个功能最近项目中使用到了,因为代码比较臃肿,不是很方便。所以选择插件话,功能本社类似支付宝里面的共享单车等app加载功能。好处具体不说了,直接说下思路吧。

我的工程是app,想要加载的插件是plugin.apk。安卓机制是想要打开的activity必须进行注册才可以使用,那么怎么能加载第三方apk的activity呢?这里引入一个代理的proxyactivity,在app工程里面进行注册,所以我可直接进行使用proxyactivity,根据dexClassLoader加载class文件和反射机制,将pugin.apk资源文件和class文件都进行获取,值得注意的是plugin.apk的activity是没有生命周期的,所以要进行模拟生命周期,即在proxyactivity的onStart()方法里面同时给这个activity赋予声明周期信息。

好了,说下具体的思路吧,插件apk需要有一个标准接口,这个接口实现了生命周期。

public interface PluginInterface {
    public void attach(Activity ProxyActivity);//用来注册上下文
    public void onCreate(Bundle savedInstanceState);
    public void onStart();
    public void onResume();
    public void onPause();
    public void onStop();
    public void onDestroy();
    public void onSaveInstanceState(Bundle outState);
    public boolean onTouchEvent(MotionEvent event);
    public void onBackPressed();
}
实现一个插件管理类,这个类用来获得插件的资源信息等,这里属于重点,需要了解反射等知识。
 
public class PluginManager { final String TAG = "PluginManager"; private Context context; private DexClassLoader dexClassLoader;//加载外置卡class  private static PluginManager instance; private Resources resources; public String entryName ;//入口   private PluginManager(Context con){ 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值