实现原理:

原理图示:

安卓flutter混合栈开发踩坑记录 - 图1

单引擎混合栈原理:

第一版:

1.重写FlutterActivity,复制原生FlutterActivity源码,对release部分修改,实现在关闭一个FlutterActivity后FlutterEngine不走release()中的代码,直到走到栈中最后一个FlutterActivity Destroy()后再释放掉。
2.为避免报错和之后哪里要调用,FlutterAndFragmentDelegate也重写一遍,没有特殊要求,不进行改动,复制就行。
3.设置生命周期的监听与注册,在此之中进行入栈与出栈的操作,以及对FlutterEngine的解绑、绑定与释放进行管理。
4.单引擎复用,可以通过重写FlutterActivity中的provideFlutterEngine方法进行实现,直接return缓存引擎。
5.由于继承了FlutterActivity的中继Activity需要不停的被复用,因此在pop到上一个页面的的时候this.finish()会产生问题,建议直接从栈中指定activity进行finish。
6.Flutter端需要对WillPopScope方法进行封装。

第二版:

1.