利用java反射机制动态加载apk需要注意几点

(转载笔记资料)

一:一个安装的apk里面的一个TestA要去调用一个放在sd卡上的没安装的apk里面的TestB。

二:TestBActivity运行会报错,大伙不用管,只要拿到TestBActivity运行后的apk,放倒sd卡上就行(注意跟MainActivity里路径的对比),然后运行TestA。点击button就会调用到testb.apk里的类了~~
三:特别强调一点:1.我们知道一个activity具有严格意义上的生命周期必须要在ActivityThread里面去创建,所以通过   DexClassLoader加载的ActivityB是没有生命周期的,它也就是一个普通的类;
2.有人会问,为什么还要让ActivityA 来加载ActivityB,而不是直接ActivityA去load 另外一个类比如classC呢? 这个问题很简单,因为我们在打包成APK的时候,有activity会更方便和直观(自己去体会)。简单的游戏,往往一个activity就够了。那么ActivityA 也仅仅只需要加载一个类实例。
3.假如调用的罪过testB.apk里类要多次跳转就会报空指针异常了,因为我们把它看得太强大了。这里面不能再去跳转了,因为这个Activity是一个普通的类(通过反射后得来的),已经没有Activity的特性了,应该是可以有多个View的,但是只能通过new来得,而不是layout

你可能感兴趣的:(利用java反射机制动态加载apk需要注意几点)