flutter foundation的binding

这个类是在flutter项目初始化运行过程中必然会被调用的,在runApp()这个方法中被调用的。
它的主要功能是为服务(service)做绑定的,这个文件也并不大,只有500行代码。我们从上往下逐一的解析一下代码:

  1. 开始就是构造函数,这个函数的实现就是控制初始化状态的开始和结束,此外就是保证这个类只能被初始化一次。核心实现就是,这个类的实现,调用initServiceExtensions方法。

  2. initServiceExtensions这个方法就是调用了三个方法,两个registerSignalServiceExtension方法和一个registerServiceExtension方法,而registerSignalServiceExtension也是调用registerServiceExtension方法的。

  3. registerServiceExtension这个方法调用的就是底层模块developer调用registerExtension方法,对在执行回调的时候成功和报错进行处理。功能是结果以json字符串方式直接返回给底层模块了,报错的处理是经过foundation模块下assertions处理后同样以json字符串方式直接返回给底层模块。

  4. _exitApplication这个私有方法其实就是调用registerSignalServiceExtension的一个回调,只有一行代码,就是我们最不喜欢看到的闪退(强制退出应用)。

  5. reassembleApplication这个方法功能就是清除掉当前所有的报错信息,在用这个方法的时候开销是非常大的,所以需要lockEvents方法的机制保护起来,lockEvents就不多说,就是常规的加锁方法。

你可能感兴趣的:(flutter foundation的binding)