diff --git a/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java b/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java index e18520fbb..91e73d003 100644 --- a/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java +++ b/android/sample/src/main/java/com/facebook/flipper/sample/FlipperSampleApplication.java @@ -1,9 +1,8 @@ -/* - * Copyright (c) Facebook, Inc. - * - * This source code is licensed under the MIT license found in the LICENSE - * file in the root directory of this source tree. +/** + * Copyright (c) Facebook, Inc. and its affiliates. * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. */ package com.facebook.flipper.sample; @@ -65,7 +64,7 @@ public class FlipperSampleApplication extends Application { new SharedPreferencesDescriptor("other_sample", Context.MODE_PRIVATE)))); client.addPlugin(new LeakCanaryFlipperPlugin()); client.addPlugin(new ExampleFlipperPlugin()); - client.addPlugin(new CrashReporterPlugin()); + client.addPlugin(CrashReporterPlugin.getInstance()); client.start(); getSharedPreferences("sample", Context.MODE_PRIVATE).edit().putString("Hello", "world").apply(); diff --git a/android/src/main/java/com/facebook/flipper/plugins/crashreporter/CrashReporterPlugin.java b/android/src/main/java/com/facebook/flipper/plugins/crashreporter/CrashReporterPlugin.java index d0590c443..1326dd202 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/crashreporter/CrashReporterPlugin.java +++ b/android/src/main/java/com/facebook/flipper/plugins/crashreporter/CrashReporterPlugin.java @@ -1,9 +1,8 @@ -/* - * Copyright (c) Facebook, Inc. - * - * This source code is licensed under the MIT license found in the LICENSE - * file in the root directory of this source tree. +/** + * Copyright (c) Facebook, Inc. and its affiliates. * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. */ package com.facebook.flipper.plugins.crashreporter; @@ -22,7 +21,16 @@ public class CrashReporterPlugin implements FlipperPlugin { @Nullable private FlipperConnection mConnection; @Nullable private Thread.UncaughtExceptionHandler prevHandler; + private static CrashReporterPlugin crashreporterPlugin = null; + private CrashReporterPlugin() {} + + // static method to create instance of Singleton class + public static CrashReporterPlugin getInstance() { + if (crashreporterPlugin == null) crashreporterPlugin = new CrashReporterPlugin(); + + return crashreporterPlugin; + } /* * Activity to be used to display incoming messages */ @@ -38,21 +46,7 @@ public class CrashReporterPlugin implements FlipperPlugin { new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread paramThread, Throwable paramThrowable) { - if (mConnection != null) { - FlipperConnection connection = mConnection; - FlipperArray.Builder builder = new FlipperArray.Builder(); - for (StackTraceElement stackTraceElement : paramThrowable.getStackTrace()) { - builder.put(stackTraceElement.toString()); - } - FlipperArray arr = builder.build(); - connection.send( - "crash-report", - new FlipperObject.Builder() - .put("callstack", arr) - .put("name", paramThrowable.toString()) - .put("reason", paramThrowable.getMessage()) - .build()); - } + sendExceptionMessage(paramThread, paramThrowable); if (prevHandler != null) { prevHandler.uncaughtException(paramThread, paramThrowable); } @@ -60,6 +54,24 @@ public class CrashReporterPlugin implements FlipperPlugin { }); } + public void sendExceptionMessage(Thread paramThread, Throwable paramThrowable) { + if (mConnection != null) { + FlipperConnection connection = mConnection; + FlipperArray.Builder builder = new FlipperArray.Builder(); + for (StackTraceElement stackTraceElement : paramThrowable.getStackTrace()) { + builder.put(stackTraceElement.toString()); + } + FlipperArray arr = builder.build(); + connection.send( + "crash-report", + new FlipperObject.Builder() + .put("callstack", arr) + .put("name", paramThrowable.toString()) + .put("reason", paramThrowable.getMessage()) + .build()); + } + } + @Override public void onDisconnect() { mConnection = null;