Można wysłać zdarzenie z Java przy użyciu RCTDeviceEventEmitter.emit
Sposób określony tutaj: DeviceEventManagerModule.java#L27
to zrobić trzeba najpierw mieć odniesienie do ReactApplicationContext
, a następnie zadzwonić:
reactAppContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("keyboardWillShow1", null);
zamiast "null" można wyślij dowolne dane, które następnie zostaną dołączone do wydarzenia, które otrzymasz po stronie JS.
Przykładem tego jest DeviceEventManagerModule.java#L49 - w ten sposób wysyłane są zdarzenia przycisku Wstecz do JS.
Następnie można użyć podobny wzór wysyłką zdarzeń z działalności /onResume
zakładając, że masz odniesienie do ReactApplicationContext
Innym sposobem byłoby stworzyć swój własny moduł, który można zarejestrować do odbierania zdarzeń cyklu życia. Zobacz, jak to się robi w „Timing” modułu:
- „Timing” Moduł realizuje LifecycleEventListener.java interfejsu
- Gdy moduł jest inicjowany rejestruje się, aby otrzymywać cykl pośrednictwem tego interfejsu Timing.java#L126
- Można zaimplementować
onHostPause
i onHostResume
metod tego interfejsu i użyj fragmentu z powyższego, aby wysyłać zdarzenia stamtąd
Dziękujemy! Szukałem od teraz, jak zaimplementować onPause i onResume! –