Skip to content

Commit acd8c5a

Browse files
committed
Release v6.16.0
1 parent 574d568 commit acd8c5a

4 files changed

Lines changed: 90 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
## TBD
3+
## 6.16.0 (2025-07-31)
44

55
### Changes
66

bugsnag-android-core/src/main/java/com/bugsnag/android/Notifier.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import java.io.IOException
77
*/
88
class Notifier @JvmOverloads constructor(
99
var name: String = "Android Bugsnag Notifier",
10-
var version: String = "6.15.0",
10+
var version: String = "6.16.0",
1111
var url: String = "https://bugsnag.com"
1212
) : JsonStream.Streamable {
1313

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import android.app.Application
2+
import android.app.FragmentManager
3+
4+
public class FragmentActivityLifecycleCallbacks(
5+
private val spanTracker: SpanTracker,
6+
private val spanFactory: SpanFactory,
7+
private val autoInstrumentationCache: AutoInstrumentationCache,
8+
) : Application.ActivityLifecycleCallbacks, FragmentManager.FragmentLifecycleCallbacks() {
9+
10+
private val viewLoadOpts = SpanOptions.makeCurrentContext(false)
11+
12+
override fun onActivityCreated(
13+
activity: Activity,
14+
savedInstanceState: Bundle?,
15+
) {
16+
if (activity !is FragmentActivity) return
17+
18+
activity.supportFragmentManager
19+
.registerFragmentLifecycleCallbacks(this, true)
20+
}
21+
22+
override fun onFragmentPreCreated(
23+
fm: FragmentManager,
24+
f: Fragment,
25+
savedInstanceState: Bundle?,
26+
) {
27+
if (autoInstrumentationCache.isInstrumentationEnabled(f::class.java)) {
28+
// we start both ViewLoad & ViewLoadPhase/Create at exactly the same timestamp
29+
val timestamp = SystemClock.elapsedRealtimeNanos()
30+
val viewLoad =
31+
spanTracker.associate(f) {
32+
spanFactory.createViewLoadSpan(
33+
ViewType.FRAGMENT,
34+
viewNameForFragment(f),
35+
viewLoadOpts.startTime(timestamp),
36+
)
37+
}
38+
39+
spanTracker.associate(f, ViewLoadPhase.CREATE) {
40+
spanFactory.createViewLoadPhaseSpan(
41+
viewNameForFragment(f),
42+
ViewType.FRAGMENT,
43+
ViewLoadPhase.CREATE,
44+
SpanOptions.DEFAULTS
45+
.within(viewLoad)
46+
.startTime(timestamp),
47+
)
48+
}
49+
}
50+
}
51+
52+
override fun onFragmentCreated(
53+
fm: FragmentManager,
54+
f: Fragment,
55+
savedInstanceState: Bundle?,
56+
) {
57+
if (!f.isAdded) {
58+
// remove & discard the Fragment span
59+
spanTracker.removeAssociation(f, ViewLoadPhase.CREATE)?.discard()
60+
spanTracker.removeAssociation(f)?.discard()
61+
} else {
62+
spanTracker.endSpan(f, ViewLoadPhase.CREATE)
63+
}
64+
}
65+
66+
override fun onFragmentResumed(
67+
fm: FragmentManager,
68+
f: Fragment,
69+
) {
70+
spanTracker.endAllSpans(f)
71+
}
72+
73+
override fun onActivityStarted(activity: Activity): Unit = Unit
74+
75+
override fun onActivityResumed(activity: Activity): Unit = Unit
76+
77+
override fun onActivityPaused(activity: Activity): Unit = Unit
78+
79+
override fun onActivityStopped(activity: Activity): Unit = Unit
80+
81+
override fun onActivitySaveInstanceState(
82+
activity: Activity,
83+
outState: Bundle,
84+
): Unit = Unit
85+
86+
override fun onActivityDestroyed(activity: Activity): Unit = Unit
87+
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ org.gradle.jvmargs=-Xmx4096m
1111
# This option should only be used with decoupled projects. More details, visit
1212
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
1313
org.gradle.parallel=true
14-
VERSION_NAME=6.15.0
14+
VERSION_NAME=6.16.0
1515
GROUP=com.bugsnag
1616
POM_SCM_URL=https://github.com/bugsnag/bugsnag-android
1717
POM_SCM_CONNECTION=scm:git@github.com:bugsnag/bugsnag-android.git

0 commit comments

Comments
 (0)