public class DevSupportManagerImpl extends java.lang.Object implements DevSupportManager, DevServerHelper.PackagerCommandListener, DevInternalSettings.Listener
ReactInstanceManager implementation is responsible for instantiating
this class as well as for populating with a reference to CatalystInstance whenever
instance manager recreates it (through #onNewReactContextCreated). Also, instance manager
is responsible for enabling/disabling dev support in case when app is backgrounded or when all
the views has been detached from the instance (through {@link #setDevSupportEnabled} method).
IMPORTANT: In order for developer support to work correctly it is required that the
manifest of your application contain the following entries:
{@code | Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
EMOJI_FACE_WITH_NO_GOOD_GESTURE |
static java.lang.String |
EMOJI_HUNDRED_POINTS_SYMBOL |
| Constructor and Description |
|---|
DevSupportManagerImpl(android.content.Context applicationContext,
ReactInstanceManagerDevHelper reactInstanceManagerHelper,
java.lang.String packagerPathForJSBundleName,
boolean enableOnCreate,
int minNumShakes) |
DevSupportManagerImpl(android.content.Context applicationContext,
ReactInstanceManagerDevHelper reactInstanceManagerHelper,
java.lang.String packagerPathForJSBundleName,
boolean enableOnCreate,
RedBoxHandler redBoxHandler,
DevBundleDownloadListener devBundleDownloadListener,
int minNumShakes,
java.util.Map<java.lang.String,RequestHandler> customPackagerCommandHandlers) |
| Modifier and Type | Method and Description |
|---|---|
void |
addCustomDevOption(java.lang.String optionName,
DevOptionHandler optionHandler)
Add option item to dev settings dialog displayed by this manager.
|
java.util.Map<java.lang.String,RequestHandler> |
customCommandHandlers() |
java.io.File |
downloadBundleResourceFromUrlSync(java.lang.String resourceURL,
java.io.File outputFile) |
DeveloperSettings |
getDevSettings() |
boolean |
getDevSupportEnabled() |
java.lang.String |
getDownloadedJSBundleFile() |
java.lang.String |
getJSBundleURLForRemoteDebugging() |
StackFrame[] |
getLastErrorStack() |
java.lang.String |
getLastErrorTitle() |
java.lang.String |
getSourceMapUrl() |
java.lang.String |
getSourceUrl() |
void |
handleException(java.lang.Exception e)
Do something to display or log the exception.
|
void |
handleReloadJS() |
boolean |
hasBundleInAssets(java.lang.String bundleAssetName) |
boolean |
hasUpToDateJSBundleInCache() |
void |
hideRedboxDialog() |
void |
isPackagerRunning(PackagerStatusCallback callback) |
void |
onCaptureHeapCommand(Responder responder) |
void |
onInternalSettingsChanged() |
void |
onNewReactContextCreated(ReactContext reactContext) |
void |
onPackagerConnected() |
void |
onPackagerDevMenuCommand() |
void |
onPackagerDisconnected() |
void |
onPackagerReloadCommand() |
void |
onReactInstanceDestroyed(ReactContext reactContext) |
void |
registerErrorCustomizer(ErrorCustomizer errorCustomizer) |
void |
reloadJSFromServer(java.lang.String bundleURL) |
void |
reloadSettings() |
void |
setDevSupportEnabled(boolean isDevSupportEnabled)
ReactInstanceDevCommandsHandler is responsible for enabling/disabling dev support when
a React view is attached/detached or when application state changes (e.g. |
void |
setFpsDebugEnabled(boolean isFpsDebugEnabled) |
void |
setHotModuleReplacementEnabled(boolean isHotModuleReplacementEnabled) |
void |
setReloadOnJSChangeEnabled(boolean isReloadOnJSChangeEnabled) |
void |
setRemoteJSDebugEnabled(boolean isRemoteJSDebugEnabled) |
void |
showDevOptionsDialog() |
void |
showNewJavaError(java.lang.String message,
java.lang.Throwable e) |
void |
showNewJSError(java.lang.String message,
ReadableArray details,
int errorCookie) |
void |
startInspector() |
void |
stopInspector() |
void |
toggleElementInspector() |
void |
updateJSError(java.lang.String message,
ReadableArray details,
int errorCookie) |
public static final java.lang.String EMOJI_HUNDRED_POINTS_SYMBOL
public static final java.lang.String EMOJI_FACE_WITH_NO_GOOD_GESTURE
public DevSupportManagerImpl(android.content.Context applicationContext,
ReactInstanceManagerDevHelper reactInstanceManagerHelper,
java.lang.String packagerPathForJSBundleName,
boolean enableOnCreate,
int minNumShakes)
public DevSupportManagerImpl(android.content.Context applicationContext,
ReactInstanceManagerDevHelper reactInstanceManagerHelper,
java.lang.String packagerPathForJSBundleName,
boolean enableOnCreate,
RedBoxHandler redBoxHandler,
DevBundleDownloadListener devBundleDownloadListener,
int minNumShakes,
java.util.Map<java.lang.String,RequestHandler> customPackagerCommandHandlers)
public void handleException(java.lang.Exception e)
NativeModuleCallExceptionHandlerhandleException in interface NativeModuleCallExceptionHandlerpublic void showNewJavaError(java.lang.String message,
java.lang.Throwable e)
showNewJavaError in interface DevSupportManagerpublic void addCustomDevOption(java.lang.String optionName,
DevOptionHandler optionHandler)
addCustomDevOption in interface DevSupportManagerpublic void showNewJSError(java.lang.String message,
ReadableArray details,
int errorCookie)
showNewJSError in interface DevSupportManagerpublic void registerErrorCustomizer(ErrorCustomizer errorCustomizer)
registerErrorCustomizer in interface DevSupportManagerpublic void updateJSError(java.lang.String message,
ReadableArray details,
int errorCookie)
updateJSError in interface DevSupportManagerpublic void hideRedboxDialog()
hideRedboxDialog in interface DevSupportManagerpublic void showDevOptionsDialog()
showDevOptionsDialog in interface DevSupportManagerpublic void setDevSupportEnabled(boolean isDevSupportEnabled)
ReactInstanceDevCommandsHandler is responsible for enabling/disabling dev support when
a React view is attached/detached or when application state changes (e.g. the application is
backgrounded).setDevSupportEnabled in interface DevSupportManagerpublic boolean getDevSupportEnabled()
getDevSupportEnabled in interface DevSupportManagerpublic DeveloperSettings getDevSettings()
getDevSettings in interface DevSupportManagerpublic void onNewReactContextCreated(ReactContext reactContext)
onNewReactContextCreated in interface DevSupportManagerpublic void onReactInstanceDestroyed(ReactContext reactContext)
onReactInstanceDestroyed in interface DevSupportManagerpublic java.lang.String getSourceMapUrl()
getSourceMapUrl in interface DevSupportManagerpublic java.lang.String getSourceUrl()
getSourceUrl in interface DevSupportManagerpublic java.lang.String getJSBundleURLForRemoteDebugging()
getJSBundleURLForRemoteDebugging in interface DevSupportManagerpublic java.lang.String getDownloadedJSBundleFile()
getDownloadedJSBundleFile in interface DevSupportManagerpublic boolean hasUpToDateJSBundleInCache()
hasUpToDateJSBundleInCache in interface DevSupportManagertrue if ReactInstanceManager should use downloaded
JS bundle file instead of using JS file from assets. This may happen when app has not been
updated since the last time we fetched the bundle.public boolean hasBundleInAssets(java.lang.String bundleAssetName)
true if JS bundle exists, in that case ReactInstanceManager should use that file from assets instead of
downloading bundle from dev serverpublic void reloadSettings()
reloadSettings in interface DevSupportManagerpublic void onInternalSettingsChanged()
onInternalSettingsChanged in interface DevInternalSettings.Listenerpublic void handleReloadJS()
handleReloadJS in interface DevSupportManagerpublic void isPackagerRunning(PackagerStatusCallback callback)
isPackagerRunning in interface DevSupportManagerpublic java.io.File downloadBundleResourceFromUrlSync(java.lang.String resourceURL,
java.io.File outputFile)
downloadBundleResourceFromUrlSync in interface DevSupportManagerpublic java.lang.String getLastErrorTitle()
getLastErrorTitle in interface DevSupportManagerpublic StackFrame[] getLastErrorStack()
getLastErrorStack in interface DevSupportManagerpublic void onPackagerConnected()
onPackagerConnected in interface DevServerHelper.PackagerCommandListenerpublic void onPackagerDisconnected()
onPackagerDisconnected in interface DevServerHelper.PackagerCommandListenerpublic void onPackagerReloadCommand()
onPackagerReloadCommand in interface DevServerHelper.PackagerCommandListenerpublic void onPackagerDevMenuCommand()
onPackagerDevMenuCommand in interface DevServerHelper.PackagerCommandListenerpublic void onCaptureHeapCommand(Responder responder)
onCaptureHeapCommand in interface DevServerHelper.PackagerCommandListenerpublic java.util.Map<java.lang.String,RequestHandler> customCommandHandlers()
customCommandHandlers in interface DevServerHelper.PackagerCommandListenerpublic void reloadJSFromServer(java.lang.String bundleURL)
reloadJSFromServer in interface DevSupportManagerpublic void startInspector()
startInspector in interface DevSupportManagerpublic void stopInspector()
stopInspector in interface DevSupportManagerpublic void setHotModuleReplacementEnabled(boolean isHotModuleReplacementEnabled)
setHotModuleReplacementEnabled in interface DevSupportManagerpublic void setRemoteJSDebugEnabled(boolean isRemoteJSDebugEnabled)
setRemoteJSDebugEnabled in interface DevSupportManagerpublic void setReloadOnJSChangeEnabled(boolean isReloadOnJSChangeEnabled)
setReloadOnJSChangeEnabled in interface DevSupportManagerpublic void setFpsDebugEnabled(boolean isFpsDebugEnabled)
setFpsDebugEnabled in interface DevSupportManagerpublic void toggleElementInspector()
toggleElementInspector in interface DevSupportManager