Skip to content

[BUG] Setting Main page crashes when using MediaElement #3263

Description

@ssbssb-cmd

Is there an existing issue for this?

  • I have searched the existing issues

Did you read the "Reporting a bug" section on Contributing file?

Current Behavior

Adding MediaElemenet to a page, and then changing the MainPage results in a crash on Android.

I have this on my login page as a background image. Once a user logins i change the MainPage to my actual app. at this point the app crashes.

            <toolkit:MediaElement
                x:Name="BackgroundVideo"
                Aspect="AspectFill"
                ShouldAutoPlay="True"
                ShouldLoopPlayback="True"
                ShouldMute="True"
                ShouldShowPlaybackControls="False" />

Something like this is called on successful login:

Application.Current.MainPage = new Page2();

on android, this results in a crash.

<HTML>
<head>



  | Name | Value | Type
-- | -- | -- | --
◢ | $exception | {"Exception of type 'Android.Runtime.JavaProxyThrowable' was thrown."} | Android.Runtime.JavaProxyThrowable
  | ▶ Cause | null | Java.Lang.Throwable
  | ▶ Class | {class android.runtime.JavaProxyThrowable} | Java.Lang.Class
  | ▶ Data | Count = 0 | System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
  | HResult | -2146233088 | int
  | Handle | 0x0000731cfe7d1388 | System.IntPtr
  | HelpLink | null | string
  | ▶ InnerException (System.Exception) | null | System.Exception
  | ▶ InnerException | {"Cannot access disposed object with JniIdentityHashCode=252555712."} | System.Exception {System.ObjectDisposedException}
  | JavaStackTrace | "android.runtime.JavaProxyThrowable\n" | string
  | JniIdentityHashCode (Java.Interop.JavaException) | 211393919 | int
  | JniIdentityHashCode | 211393919 | int
  | JniManagedPeerState | None | Java.Interop.JniManagedPeerStates
  | LocalizedMessage | "[System.ObjectDisposedException]: Cannot access disposed object with JniIdentityHashCode=252555712.\nObject name: 'CommunityToolkit.Maui.Core.Views.MauiMediaElement'." | string
  | Message (System.Exception) | "Exception of type 'Android.Runtime.JavaProxyThrowable' was thrown." | string
  | Message | "[System.ObjectDisposedException]: Cannot access disposed object with JniIdentityHashCode=252555712.\nObject name: 'CommunityToolkit.Maui.Core.Views.MauiMediaElement'." | string
  | ▶ PeerReference (Java.Interop.JavaException) | {Java.Interop.JniObjectReference} | Java.Interop.JniObjectReference
  | Source | "Mono.Android.Runtime" | string
  | StackTrace | "\n  --- End of managed Android.Runtime.JavaProxyThrowable stack trace ---\nandroid.runtime.JavaProxyThrowable\n" | string
  | TargetSite | null | System.Reflection.MethodBase
  | is_generated | false | bool
  | ▶ Static members |   |  
  | ▶ Non-Public members |   |  



Android.Runtime.JavaProxyThrowable
HResult=0x80131500
Source=
StackTrace:

An unhandled exception of type 'Android.Runtime.JavaProxyThrowable' occurred in Mono.Android.Runtime.dll

07-11 17:46:33.945 D/AndroidRuntime(17216): Shutting down VM
07-11 17:46:33.946 E/AndroidRuntime(17216): FATAL EXCEPTION: main
07-11 17:46:33.946 E/AndroidRuntime(17216): Process: com.companyname.mediaplayersample, PID: 17216
07-11 17:46:33.946 E/AndroidRuntime(17216): android.runtime.JavaProxyThrowable: [System.ObjectDisposedException]: Cannot access disposed object with JniIdentityHashCode=252555712.
07-11 17:46:33.946 E/AndroidRuntime(17216): Object name: 'CommunityToolkit.Maui.Core.Views.MauiMediaElement'.
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Java.Interop.JniPeerMembers.AssertSelf + 0x1e(Unknown Source)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod + 0x0(Unknown Source)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Android.Views.ViewGroup.RemoveView + 0x27(Unknown Source)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Microsoft.Maui.WindowOverlay.DeinitializePlatformDependencies(/_/src/Core/src/WindowOverlay/WindowOverlay.Android.cs:86)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Microsoft.Maui.WindowOverlay.Deinitialize(/_/src/Core/src/WindowOverlay/WindowOverlay.cs:90)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Microsoft.Maui.VisualDiagnosticsOverlay.Deinitialize(/_/src/Core/src/VisualDiagnostics/VisualDiagnosticsOverlay.cs:186)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Microsoft.Maui.Handlers.WindowHandler.OnRootViewChanged(/_/src/Core/src/Handlers/Window/WindowHandler.Android.cs:92)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Microsoft.Maui.Platform.NavigationRootManager.OnWindowContentPlatformViewCreated(/_/src/Core/src/Platform/Android/Navigation/NavigationRootManager.cs:129)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at Microsoft.Maui.Platform.NavigationRootManager+ElementBasedFragment.OnViewCreated(/_/src/Core/src/Platform/Android/Navigation/NavigationRootManager.cs:234)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at AndroidX.Fragment.App.Fragment.n_OnViewCreated_Landroid_view_View_Landroid_os_Bundle_(C:\a\_work\1\s\generated\androidx.fragment.fragment\obj\Release
et10.0-android\generated\src\AndroidX.Fragment.App.Fragment.cs:3300)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at crc6452ffdc5b34af3a0f.NavigationRootManager_ElementBasedFragment.n_onViewCreated(Native Method)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at crc6452ffdc5b34af3a0f.NavigationRootManager_ElementBasedFragment.onViewCreated(NavigationRootManager_ElementBasedFragment.java:36)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3152)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:608)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:286)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2214)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2115)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2052)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:703)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at android.os.Handler.handleCallback(Handler.java:942)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at android.os.Looper.loopOnce(Looper.java:201)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at android.os.Looper.loop(Looper.java:288)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at android.app.ActivityThread.main(ActivityThread.java:7892)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at java.lang.reflect.Method.invoke(Native Method)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
07-11 17:46:33.946 E/AndroidRuntime(17216): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Expected Behavior

app should not crash

Steps To Reproduce

  1. Open and run solution
  2. Click button

Link to public reproduction project repository

https://github.com/ssbssb-cmd/MediaPlayerSampleCrash

Environment

- .NET MAUI CommunityToolkit:10.0.0
- OS: Windows 11
- .NET MAUI: 10
-  .NET MAUI Controls: 10.0.80

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions