override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
this.eventSink = events
XLog.d("FlutterEventChannel", "事件流建立成功")
resendWaitMsgOnPrepared()
}
override fun onAttachedToEngine(binding: FlutterPlugin.FlutterPluginBinding) {
XLog.d("FlutterEventChannel", "onAttachedToEngine called")
eventChannel = EventChannel(binding.binaryMessenger, eventChannelName)
eventChannel?.setStreamHandler(this)
mMethodChannel = MethodChannel(binding.binaryMessenger, methodChannelName)
mMethodChannel.setMethodCallHandler(this)
}
上述的两个代码片段中,EventChannel/ MethodChannel 通道按照正常的预期在Flutter端都能够正常的建立,但是onListen 函数会存在一定概率无法成功的接受到回调;
比如在Flutter端先执行了MethodChannel.invoke(’XXX‘) 等操作,然后再执行如下的代码片段
EventChannel(eventChannelName).receiveBroadcastStream().listen()
具体更新层次的原因需要从Flutter的底层原理进行分析;
Flutter的代码执行顺序必须是这样的: (1)文章中的code片段3; (2)MethodChannel.invoke(’XXX‘) (3)Native端的onListen() 函数通道日志就能够正常的建立.