Вы должны установить двустороннюю связь между платформами. Я полагаю, вы знаете, как создавать и регистрировать свои собственные модули в Android.
React-Native -> Android коммуникации.
Собственный код:
@ReactMethod
public void setCurrentScreen(String screen) {
}
В коде JS вы можете прикрепить прослушиватель навигации к маршрутизатору с помощью настройки onStateChange
prop и вызова метода YourNativeModule.setCurrentScreen()
.
Android -> Связь React-Native:
Просто отправьте событие из FullScreenActivity на JS с информацией о состоянии активности и подпишитесь на события в JS.
override fun onStart() {
super.onStart()
sendActivityStartedEvent()
}
override fun onStop() {
sendActivityStoppedEvent()
super.onStop()
}
private fun sendActivityStartedEvent() {
val params = Arguments.createMap()
params.putBoolean("active", true)
sendEvent("activityState", params)
}
private fun sendActivityStoppedEvent() {
val params = Arguments.createMap()
params.putBoolean("active", false)
sendEvent("activityState", params)
}
private fun sendEvent(eventName: String, params: WritableMap?) {
reactNativeHost.reactInstanceManager.currentReactContext
?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
?.emit(eventName, params)
}
Для доступа к reactNativeHost
ваша FullScreenActivity должна быть экземпляром ReactActivity
JS код:
this.subscription = DeviceEventEmitter.addListener('activityState', event => {
console.log(event.active)
});