Implementé un módulo nativo que navega a una actividad de cámara. Pero al llamar a la cámara desde nativeModules, tarda entre 1500 y 2000 ms en abrirse (excluyendo la actualización de la interfaz de usuario en la cámara).
La clase de módulo nativo que extiende ReactContextBaseJavaModule está escrita así:
@ReactModule(name = ImagePickerModule.NAME) public class ImagePickerModule extends ReactContextBaseJavaModule implements ActivityEventListener { .... // Calling this method @ReactMethod public void launchCamera(final ReadableMap options, final Callback callback) { // this method opens camera after checking necessary permissions and applies UI changes which was set by the user previously } .... } Y esta es la asignación nativeModules a JS en el archivo .ts
import {NativeModules} from 'react-native'; import {ImagePickerNativeModule} from './privateTypes'; const NativeInterface: ImagePickerNativeModule | undefined = NativeModules.ImagePickerManager; const DEFAULT_OPTIONS: ImagePickerOptions = { // options here } class ImagePicker { launchCamera(options: ImagePickerOptions, callback: Callback): void { return NativeInterface.launchCamera( { ...DEFAULT_OPTIONS, ...options, tintColor: processColor(options.tintColor || DEFAULT_OPTIONS.tintColor), }, callback, ); } }Estoy llamando al nativeModule desde un código nativo de reacción como este:
export const CustomCamera = (): Promise<{ uri: string }> => { return new Promise((resolve, reject) => { ImagePicker.launchCamera(***Camera options passed***) .then(res => // Do something here) .catch(err => // Do something here) } }¿Hay alguna manera de que pueda abrir la actividad más rápido mientras la llamo desde módulos nativos? o mantener la actividad en segundo plano para que cameraActivity pueda cargarse rápidamente mientras se llama desde react-native? Por favor recomiende.