From 58dc1ded7acc2e8d317a4cf769c3055965f14749 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 20 May 2026 11:17:33 -0500 Subject: [PATCH 1/2] [Mono.Android] Mark JavaFinalize() as [Obsolete] Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal. The correct pattern for cleanup in .NET Android is to override Dispose(bool disposing) or use the C# destructor, not JavaFinalize(). Overriding JavaFinalize() can also cause issues where the Java GC calls finalize() on a Java wrapper even when C# still holds a live reference to the managed object, leading to ObjectDisposedException (see #2072). Mark JavaFinalize() as [Obsolete] via binding metadata to guide users toward the correct disposal patterns. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/Mono.Android/metadata | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mono.Android/metadata b/src/Mono.Android/metadata index 4b4732a5eaf..0ba97961319 100644 --- a/src/Mono.Android/metadata +++ b/src/Mono.Android/metadata @@ -312,6 +312,7 @@ java.lang.Object java.lang.Object JavaFinalize + Use the Dispose() method or the C# destructor instead. Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal. Java.Lang.IAppendable Java.Lang.IAppendable ICharSequence From 1f25a6e6e19b3456daae0a56db9b84489bbbadb3 Mon Sep 17 00:00:00 2001 From: Jonathan Peppers Date: Wed, 20 May 2026 13:52:25 -0500 Subject: [PATCH 2/2] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- src/Mono.Android/metadata | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mono.Android/metadata b/src/Mono.Android/metadata index 0ba97961319..feb3eb0dc8d 100644 --- a/src/Mono.Android/metadata +++ b/src/Mono.Android/metadata @@ -312,7 +312,7 @@ java.lang.Object java.lang.Object JavaFinalize - Use the Dispose() method or the C# destructor instead. Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal. + Override Dispose (bool disposing) for cleanup customization, or use the C# destructor instead. Java's Object.finalize() has been deprecated since JDK 9 and is marked for removal. Java.Lang.IAppendable Java.Lang.IAppendable ICharSequence