Open MicroKibaco opened 4 years ago
注入前加载的类(比如:Application 类) 肯定是不能被修复的
热修复在初始化过程中,可以放到attatchBaseContext 进行初始化,但是,attatchBaseContext,有相当多的限制,比如:不能进行网络请求下载新补丁,因为App申请的权限还没有授予完成,然后有人会问了,我放oncreate不就行了,其实放oncreate 问题也有,如果你的清单文件里面有内容提供者,或者其他第三方Application里面有内容提供者,ContentProvider是优先Application.onCreate加载的,具体先后顺序如下:
attatchBaseContext
App
oncreate
Application
ContentProvider
Application.onCreate
Application.attatchBaseContext -> ContentProvider.onCreate -> Application.onCreate -> Activity.onCreate,所以为了保险起见,还是将入口类放在attatchBaseContext比较好
Application.attatchBaseContext
ContentProvider.onCreate
Activity.onCreate
BuildConfig
PackageManager
注入前加载的类(比如:Application 类) 肯定是不能被修复的
热修复在初始化过程中,可以放到
attatchBaseContext
进行初始化,但是,attatchBaseContext
,有相当多的限制,比如:不能进行网络请求下载新补丁,因为App
申请的权限还没有授予完成,然后有人会问了,我放oncreate
不就行了,其实放oncreate
问题也有,如果你的清单文件里面有内容提供者,或者其他第三方Application
里面有内容提供者,ContentProvider
是优先Application.onCreate
加载的,具体先后顺序如下:Application.attatchBaseContext
->ContentProvider.onCreate
->Application.onCreate
->Activity.onCreate
,所以为了保险起见,还是将入口类放在attatchBaseContext
比较好BuildConfig
是编译期动态生成的,属于非系统类,获取版本信息会导致提前引入问题,所以建议使用PackageManager
来获取版本号。