diff --git a/android/src/main/cpp/sonar.cpp b/android/src/main/cpp/sonar.cpp index 760048cbe..aba01c0e8 100644 --- a/android/src/main/cpp/sonar.cpp +++ b/android/src/main/cpp/sonar.cpp @@ -198,6 +198,11 @@ class JFlipperPlugin : public jni::JavaClass { static const auto method = javaClassStatic()->getMethod("onDisconnect"); method(self()); } + + bool runInBackground() { + static const auto method = javaClassStatic()->getMethod("runInBackground"); + return method(self()) == JNI_TRUE; + } }; class JFlipperStateUpdateListener : public jni::JavaClass { @@ -247,6 +252,10 @@ class JFlipperPluginWrapper : public FlipperPlugin { jplugin->didDisconnect(); } + virtual bool runInBackground() override { + return jplugin->runInBackground(); + } + JFlipperPluginWrapper(jni::global_ref plugin): jplugin(plugin) {} }; diff --git a/android/src/main/java/com/facebook/flipper/core/FlipperPlugin.java b/android/src/main/java/com/facebook/flipper/core/FlipperPlugin.java index 4e513c299..07392af27 100644 --- a/android/src/main/java/com/facebook/flipper/core/FlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/core/FlipperPlugin.java @@ -34,4 +34,9 @@ public interface FlipperPlugin { * longer valid. Do not try to use the connection in or after this method has been called. */ void onDisconnect() throws Exception; + + /** + Returns true if the plugin is meant to be run in background too, otherwise it returns false. + */ + boolean runInBackground(); } diff --git a/android/src/main/java/com/facebook/flipper/plugins/common/BufferingFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/common/BufferingFlipperPlugin.java index d4248832f..b2e0ee0aa 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/common/BufferingFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/common/BufferingFlipperPlugin.java @@ -37,6 +37,11 @@ public abstract class BufferingFlipperPlugin implements FlipperPlugin { mConnection = null; } + @Override + public boolean runInBackground() { + return true; + } + public synchronized FlipperConnection getConnection() { return mConnection; } diff --git a/android/src/main/java/com/facebook/flipper/plugins/console/ConsoleFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/console/ConsoleFlipperPlugin.java index 4ca39a7fd..3175f150c 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/console/ConsoleFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/console/ConsoleFlipperPlugin.java @@ -31,4 +31,9 @@ public class ConsoleFlipperPlugin implements FlipperPlugin { } public void onDisconnect() throws Exception {} + + @Override + public boolean runInBackground() { + return false; + } } diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java index 7f885a4cc..d30e9d7ba 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java @@ -171,6 +171,11 @@ public class InspectorFlipperPlugin implements FlipperPlugin { mConnection = null; } + @Override + public boolean runInBackground() { + return false; + } + final FlipperReceiver mShouldShowLithoAccessibilitySettings = new MainThreadFlipperReceiver(mConnection) { @Override diff --git a/android/src/main/java/com/facebook/flipper/plugins/leakcanary/LeakCanaryFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/leakcanary/LeakCanaryFlipperPlugin.java index ad77e412c..1c83b651a 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/leakcanary/LeakCanaryFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/leakcanary/LeakCanaryFlipperPlugin.java @@ -57,6 +57,11 @@ public class LeakCanaryFlipperPlugin implements FlipperPlugin { mConnection = null; } + @Override + public boolean runInBackground() { + return false; + } + private void sendLeakList() { if (mConnection != null) { JSONObject obj = new JSONObject(); diff --git a/android/src/main/java/com/facebook/flipper/plugins/sandbox/SandboxFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/sandbox/SandboxFlipperPlugin.java index f95a988d2..ce34a5202 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/sandbox/SandboxFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/sandbox/SandboxFlipperPlugin.java @@ -68,4 +68,9 @@ public class SandboxFlipperPlugin implements FlipperPlugin { @Override public void onDisconnect() {} + + @Override + public boolean runInBackground() { + return false; + } } diff --git a/android/src/main/java/com/facebook/flipper/plugins/sharedpreferences/SharedPreferencesFlipperPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/sharedpreferences/SharedPreferencesFlipperPlugin.java index 8a6d453a5..10ad81ac6 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/sharedpreferences/SharedPreferencesFlipperPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/sharedpreferences/SharedPreferencesFlipperPlugin.java @@ -200,6 +200,11 @@ public class SharedPreferencesFlipperPlugin implements FlipperPlugin { mConnection = null; } + @Override + public boolean runInBackground() { + return false; + } + public static class SharedPreferencesDescriptor { public final String name; public final int mode;