From c1fd55095a019c2be127b140c4f96c30d4da7618 Mon Sep 17 00:00:00 2001 From: Qiao Liang Date: Tue, 15 Dec 2015 12:52:01 +0800 Subject: [PATCH] add option in 'Dev Settings' for never use cached bundle file --- .../facebook/react/devsupport/DevInternalSettings.java | 9 ++++++++- .../com/facebook/react/devsupport/DevServerHelper.java | 7 +++++++ .../facebook/react/devsupport/DevSupportManagerImpl.java | 2 +- .../facebook/react/modules/debug/DeveloperSettings.java | 6 ++++++ ReactAndroid/src/main/res/devsupport/xml/preferences.xml | 6 ++++++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java index 825bc1c59843..772119fd89aa 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevInternalSettings.java @@ -35,6 +35,7 @@ public class DevInternalSettings implements private static final String PREFS_RELOAD_ON_JS_CHANGE_KEY = "reload_on_js_change"; private static final String PREFS_INSPECTOR_DEBUG_KEY = "inspector_debug"; private static final String PREFS_HOT_MODULE_REPLACEMENT_KEY = "hot_module_replacement"; + private static final String PREFS_USE_CACHED_BUNDLE = "use_cached_bundle"; private final SharedPreferences mPreferences; private final DevSupportManager mDebugManager; @@ -66,6 +67,11 @@ public boolean isJSDevModeEnabled() { return mPreferences.getBoolean(PREFS_JS_DEV_MODE_DEBUG_KEY, true); } + @Override + public boolean getShouldUseCachedBundle() { + return mPreferences.getBoolean(PREFS_USE_CACHED_BUNDLE, true); + } + public @Nullable String getDebugServerHost() { return mPreferences.getString(PREFS_DEBUG_SERVER_HOST_KEY, null); } @@ -73,7 +79,8 @@ public boolean isJSDevModeEnabled() { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { if (PREFS_FPS_DEBUG_KEY.equals(key) || PREFS_RELOAD_ON_JS_CHANGE_KEY.equals(key) || - PREFS_JS_DEV_MODE_DEBUG_KEY.equals(key)) { + PREFS_JS_DEV_MODE_DEBUG_KEY.equals(key) || + PREFS_USE_CACHED_BUNDLE.equals(key)) { mDebugManager.reloadSettings(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java index 515cab3a517b..32f4f3c69327 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevServerHelper.java @@ -134,6 +134,13 @@ private boolean getHMR() { return mSettings.isHotModuleReplacementEnabled(); } + /** + * @return whether we should use cached JS bundles. + */ + public boolean getShouldUseCachedBundle() { + return mSettings.getShouldUseCachedBundle(); + } + /** * @return the host to use when connecting to the bundle server. */ diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index 7bdeea2d7ce5..f60ee0fa55c6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -452,7 +452,7 @@ public String getDownloadedJSBundleFile() { */ @Override public boolean hasUpToDateJSBundleInCache() { - if (mIsDevSupportEnabled && mJSBundleTempFile.exists()) { + if (mIsDevSupportEnabled && mDevServerHelper.getShouldUseCachedBundle() && mJSBundleTempFile.exists()) { try { String packageName = mApplicationContext.getPackageName(); PackageInfo thisPackage = mApplicationContext.getPackageManager() diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java index 5ff8dfbf76f9..70e1e3bbb20e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/debug/DeveloperSettings.java @@ -33,4 +33,10 @@ public interface DeveloperSettings { * @return Whether element inspector is enabled. */ boolean isElementInspectorEnabled(); + + /** + * @return Whether an cached bundle file should be used. + */ + boolean getShouldUseCachedBundle(); + } diff --git a/ReactAndroid/src/main/res/devsupport/xml/preferences.xml b/ReactAndroid/src/main/res/devsupport/xml/preferences.xml index 99f5408c0508..058e6e46320f 100644 --- a/ReactAndroid/src/main/res/devsupport/xml/preferences.xml +++ b/ReactAndroid/src/main/res/devsupport/xml/preferences.xml @@ -19,6 +19,12 @@ android:summary="At the end of animations, Toasts and logs to logcat debug information about the FPS during that transition. Currently only supported for transitions (animated navigations)." android:defaultValue="false" /> +