diff --git a/CHANGELOG.md b/CHANGELOG.md index 2db3e8f9b8..c11219fa1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## TBD + +* Register system callbacks on background thread + [#1292](https://github.com/bugsnag/bugsnag-android/pull/1292) + ## 5.9.5 (2021-06-25) * Unity: Properly handle ANRs after multiple calls to autoNotify and autoDetectAnrs @@ -38,7 +43,6 @@ * Cache results from PackageManager [#1288](https://github.com/bugsnag/bugsnag-android/pull/1288) -<<<<<<< HEAD * Use ring buffer to store breadcrumbs [#1286](https://github.com/bugsnag/bugsnag-android/pull/1286) @@ -47,10 +51,6 @@ * Replace calls to String.format() with concatenation [#1293](https://github.com/bugsnag/bugsnag-android/pull/1293) -======= -* Register system callbacks on background thread - [#1292](https://github.com/bugsnag/bugsnag-android/pull/1292) ->>>>>>> f61b285a (perf: register system callbacks on background thread) * Optimize capture of thread traces [#1300](https://github.com/bugsnag/bugsnag-android/pull/1300) diff --git a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MemoryTrimTest.java b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MemoryTrimTest.java index 9d6cfe6cf7..8d8799b65d 100644 --- a/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MemoryTrimTest.java +++ b/bugsnag-android-core/src/androidTest/java/com/bugsnag/android/MemoryTrimTest.java @@ -36,6 +36,9 @@ public void onLowMemoryEvent() { when(context.getApplicationContext()).thenReturn(context); Client client = new Client(context, BugsnagTestUtils.generateConfiguration()); + // block until observer is registered + client.bgTaskService.shutdown(); + // capture the registered ComponentCallbacks verify(context, times(1)).registerComponentCallbacks(componentCallbacksCaptor.capture()); diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java index c4762b7642..caacb19af6 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/Client.java @@ -223,10 +223,6 @@ public Unit invoke(String activity, Map metadata) { exceptionHandler.install(); } - // register listeners for system events in the background. - systemBroadcastReceiver = new SystemBroadcastReceiver(this, logger); - registerListenersInBackground(); - // load last run info lastRunInfoStore = new LastRunInfoStore(immutableConfig); lastRunInfo = loadLastRunInfo(); @@ -239,6 +235,10 @@ public Unit invoke(String activity, Map metadata) { eventStore.flushAsync(); sessionTracker.flushAsync(); + // register listeners for system events in the background. + systemBroadcastReceiver = new SystemBroadcastReceiver(this, logger); + registerListenersInBackground(); + // leave auto breadcrumb Map data = Collections.emptyMap(); leaveAutoBreadcrumb("Bugsnag loaded", BreadcrumbType.STATE, data); diff --git a/bugsnag-android-core/src/main/java/com/bugsnag/android/SystemBroadcastReceiver.kt b/bugsnag-android-core/src/main/java/com/bugsnag/android/SystemBroadcastReceiver.kt index 4e2d57d86a..ac8e309ccb 100644 --- a/bugsnag-android-core/src/main/java/com/bugsnag/android/SystemBroadcastReceiver.kt +++ b/bugsnag-android-core/src/main/java/com/bugsnag/android/SystemBroadcastReceiver.kt @@ -35,7 +35,7 @@ internal class SystemBroadcastReceiver( fun shortenActionNameIfNeeded(action: String): String { return if (isAndroidKey(action)) { - action.substring(action.lastIndexOf(".") + 1) + action.substringAfterLast('.') } else { action }