启动未声明的Activity的好处
1,插件化启动Activity
2,简化AndroidManifest.xml文件
3,动态部署Activity
原理
说到Activity的启动流程,读过源码的都知道我们都会经由android.app.ActivityThread类在主线程中执行。ActivityThread类有一个成员叫mInstrumentation,它会负责创建Activity等操作。通过篡改mInstrumentation为我们自己的PluginInstrumentation。当mInstrumentation为我们的时候,那就好办了,我们通过在AndroidManifest.xml声明一个占位的 LauncherActivity,并传入我们需要启动的Activity的类名过去。在PluginInstrumentation中,因为LauncherActivity是已经注册过的,我们可以顺利通过系统检测,然后在PluginInstrumentaction中的newActivity中通过Intent的Activity名称,通过反射的形式new 一个我们想要启动的Activity的类,这样我们的Activity虽然没有在AndroidManifest.xml中声明,但是却是被系统所管理的。
这篇文章主要讲解的是启动未声明的Activity的原理,这项技术主要用于动态加载技术。当然了,具体涉及到插件化的还有资源的问题。
技术交流
QQGroup:297798093
email:ibeam@qq.com