mui框架安卓离线打包⾼级应⽤
mui离线打包功能可以通过插件的⽅式让js和原⽣代码通信,以达到调⽤第三⽅原⽣sdk等⽬的,但有些第三⽅原⽣sdk需要在activity的⽣命周期⾥调⽤某些⽅法进⾏初始化、释放资源等操作,这就没法通过简单的插件来实现了。这两天研究了⼀下这⽅⾯的东西,在此记录。
需求
第三⽅sdk有初始化、暂停、启⽤、释放资源这⼏个⽣命周期相关⽅法,要求在页⾯onCreate中调⽤初始化,在页⾯onPause时调⽤暂停,在页⾯onResume时调⽤恢复,在销毁时调⽤释放资源。
分析
如果是原⽣应⽤,这完全没难度,重写⽣命周期⽅法并在⾥⾯调⽤对应的sdk⽅法即可,但mui的离线打包框架中的activity没法直接碰到,那么⾸先我们要有没有相关的⽣命周期回调可以设置,如果没有,尝试继承它看能否实现。
mui框架常用组件有哪些动⼿做
百度⼀下
这绝对应该是第⼀步,如果已经有现成的解决⽅案,将⼤⼤节约我们的时间。不过遗憾的是,没到。。
研究源码流程
⾸先,这个离线打包框架不是开源的,我们只能通过反编译来研究它的流程(Androidstudio⾃带了反编译)。⼤致流程是:应⽤⼊⼝是PandoraEntry这个Activity直接⼦类,这⾥只重写了onCreate⽅法,在⾥⾯判断了本应⽤是否是steam_app(貌似是mui⾃⼰搞的⼀个类似Quick App和Instant App的尴尬东西,⽆视它),如果不是,则启动PandoraEntryActivity,注意,这个类名⽐前⾯那个多了个Activity,不得不吐槽mui神(la)奇(ji)的命名⽅式,这个PandoraEntryActivity就是整个app的承载者,因为它的⽗亲在启动它20毫秒后就绝望的⾃尽了(所有html页⾯(也就是webview)都要由它来养活,不绝望都难),⽽它本⾝也不会启动任何其他activity,除⾮你⽤原⽣的⽅式在插件⾥启动。
那么接下来我们要做的就是在这个PandoraEntryActivity的⽣命周期回调⾥加⼊调⽤第三⽅sdk⽅法的逻辑。怎么做?继承,我们⾃⼰写⼀个Activity继承它,然后写⼊需要的逻辑。代码如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论