maui: CollectionView throws Recycled-Exception while loading Images with Web-URL

Description

CollectionView throws Java.Lang.RuntimeException: 'Canvas: trying to use a recycled bitmap android.graphics.Bitmap for Web-URL images. Caching is disabled to receive new images. In my real scenario, I have different URLs and Caching enabled, but same issue.

Steps to Reproduce

  1. Create new MAUI Project
  2. Add CollectionView in XAML with DataBinding to ObservableList which contains simple objects with property TestUrl = https://picsum.photos/200/300
  3. Set Uri for Image via Image.Source - UriImageSource
  4. Set CachingEnabled = false (to obtain every time new images)
  5. Initialize list with 50 elements in OnAppearing()
  6. Start app and start scrolling up and down for some seconds

Expected outcome: List can be scrolled, no crash Actual outcome: Recycled exception gets thrown - app crashes

Repository to reproduce: TestRepo

Version with bug

6.0.400

Last version that worked well

Unknown/Other

Affected platforms

Android

Affected platform versions

Android 12

Did you find any workaround?

It seems to be working, if I set HeightRequest and WidthRequest to the original image size. But I don’t know the size of the images, therefore I like to use Aspect="AspectFit". But this also leads to a crash.

Relevant log output

Forwarding debugger port 8816
Detecting existing process
> am start -a "android.intent.action.MAIN" -c "android.intent.category.LAUNCHER" -n "com.companyname.mauiapprececlerview/crc64e03b45136a30f3e3.MainActivity"
> Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.companyname.mauiapprececlerview/crc64e03b45136a30f3e3.MainActivity }
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/MauiAppRececlerView.dll
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Mono.Android.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Java.Interop.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Collections.dll [External]
Resolved pending breakpoint for 'Android.Runtime.JNIEnv.RegisterJniNatives(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.Int32)' to /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:124 [0x00000].
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Threading.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.InteropServices.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Threading.Thread.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Diagnostics.StackTrace.dll [External]
Loaded assembly: data-0x6edb8c7020 [External]
Loaded assembly: data-0x6edb9570b0 [External]
Loaded assembly: data-0x6f2b91d030 [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/netstandard.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Linq.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Collections.Concurrent.dll [External]
Resolved pending breakpoint for 'Xamarin.HotReload.HotReloadAgent.BreakpointSendToIde(System.String)' to D:\a\_work\1\s\HotReload\Source\Xamarin.HotReload.Agent\HotReloadAgent.cs:419 [0x00000].
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Text.Json.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Text.Encodings.Web.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.ComponentModel.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Maui.Controls.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.ObjectModel.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Maui.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Maui.Graphics.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Maui.Essentials.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Extensions.Logging.Abstractions.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.ComponentModel.TypeConverter.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Private.Uri.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.Loader.dll [External]
Resolved pending breakpoint for 'Xamarin.HotReload.HotReloadAgent.BreakpointCheckpoint()' to D:\a\_work\1\s\HotReload\Source\Xamarin.HotReload.Agent\HotReloadAgent.cs:414 [0x00000].
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Memory.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Reflection.Emit.Lightweight.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Reflection.Emit.ILGeneration.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Reflection.Primitives.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.CompilerServices.Unsafe.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Core.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Extensions.DependencyInjection.Abstractions.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Maui.Controls.Xaml.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Extensions.Configuration.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Extensions.Configuration.Abstractions.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Extensions.Logging.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.AppCompat.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.Google.Android.Material.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.SwipeRefreshLayout.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Fragment.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Activity.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Lifecycle.ViewModel.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Lifecycle.Common.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.SavedState.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.DrawerLayout.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.CustomView.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Navigation.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Net.Primitives.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Extensions.DependencyInjection.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Diagnostics.Tracing.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Xml.ReaderWriter.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Private.Xml.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Text.Encoding.Extensions.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Text.RegularExpressions.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Numerics.Vectors.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.RecyclerView.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.CardView.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Loader.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Microsoft.Maui.Controls.Compatibility.dll [External]
Thread started:  #2
Thread started:  #3
Thread started:  #4
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.Serialization.Json.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Private.DataContractSerialization.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.Serialization.Xml.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.Serialization.Primitives.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.CoordinatorLayout.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Lifecycle.LiveData.Core.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.ViewPager2.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.Lifecycle.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/Xamarin.AndroidX.ViewPager.dll [External]
Thread started: <Thread Pool> #5
Thread started: .NET ThreadPool Gate #6
Thread started: <Thread Pool> #7
Thread started: .NET Timers #8
[apprececlervie] Late-enabling -Xcheck:jni
[USNET] USNET: appName: com.companyname.mauiapprececlerview
[ProcessState] Binder ioctl to enable oneway spam detection failed: Invalid argument
[CompatibilityChangeReporter] Compat change id reported: 171979766; UID 10738; state: ENABLED
[GraphicsEnvironment] ANGLE Developer option for 'com.companyname.mauiapprececlerview' set to: 'default'
[GraphicsEnvironment] App is not on the allowlist for updatable production driver.
[LoadedApk] LoadedApk::makeApplication() appContext.mOpPackageName=com.companyname.mauiapprececlerview appContext.mBasePackageName=com.companyname.mauiapprececlerview
[NetworkSecurityConfig] No Network Security Config specified, using platform default
[NetworkSecurityConfig] No Network Security Config specified, using platform default
[debug-app-helper] Checking if libmonodroid was unpacked to /data/app/~~CWpv9Qy7m-GVLwx_Cqdi9g==/com.companyname.mauiapprececlerview-GxwgJne5UukibMRdBd3EWA==/lib/arm64/libmonodroid.so
[debug-app-helper] Native libs extracted to /data/app/~~CWpv9Qy7m-GVLwx_Cqdi9g==/com.companyname.mauiapprececlerview-GxwgJne5UukibMRdBd3EWA==/lib/arm64, assuming application/android:extractNativeLibs == true
[debug-app-helper] Setting up for DSO lookup in app data directories
[debug-app-helper] Added filesystem DSO lookup location: /data/app/~~CWpv9Qy7m-GVLwx_Cqdi9g==/com.companyname.mauiapprececlerview-GxwgJne5UukibMRdBd3EWA==/lib/arm64
[debug-app-helper] Using runtime path: /data/app/~~CWpv9Qy7m-GVLwx_Cqdi9g==/com.companyname.mauiapprececlerview-GxwgJne5UukibMRdBd3EWA==/lib/arm64
[debug-app-helper] checking directory: `/data/user/0/com.companyname.mauiapprececlerview/files/.__override__/lib`
[debug-app-helper] directory does not exist: `/data/user/0/com.companyname.mauiapprececlerview/files/.__override__/lib`
[debug-app-helper] Checking whether Mono runtime exists at: /data/user/0/com.companyname.mauiapprececlerview/files/.__override__/libmonosgen-2.0.so
[debug-app-helper] Checking whether Mono runtime exists at: /data/app/~~CWpv9Qy7m-GVLwx_Cqdi9g==/com.companyname.mauiapprececlerview-GxwgJne5UukibMRdBd3EWA==/lib/arm64/libmonosgen-2.0.so
[debug-app-helper] Mono runtime found at: /data/app/~~CWpv9Qy7m-GVLwx_Cqdi9g==/com.companyname.mauiapprececlerview-GxwgJne5UukibMRdBd3EWA==/lib/arm64/libmonosgen-2.0.so
[apprececlervie] Attempt to remove non-JNI local reference, dumping thread
[DOTNET] JNI_OnLoad: JNI_OnLoad in pal_jni.c
[monodroid] Creating public update directory: `/data/user/0/com.companyname.mauiapprececlerview/files/.__override__`
[apprececlervie] Attempt to remove non-JNI local reference, dumping thread
[monodroid-debug] Trying to initialize the debugger with options: --debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:8816,server=y,embedding=1
[monodroid-assembly] open_from_bundles: failed to load assembly MauiAppRececlerView.dll
[monodroid-gc] GREF GC Threshold: 46080
[monodroid-assembly] open_from_bundles: failed to load assembly Mono.Android.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Java.Interop.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Collections.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Threading.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.InteropServices.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Threading.Thread.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Diagnostics.StackTrace.dll
[apprececlervie] Attempt to remove non-JNI local reference, dumping thread
[monodroid-assembly] open_from_bundles: failed to load assembly netstandard.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Linq.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Collections.Concurrent.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Text.Json.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Text.Encodings.Web.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.ComponentModel.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.Controls.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.ObjectModel.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.Graphics.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.Essentials.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Extensions.Logging.Abstractions.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.ComponentModel.TypeConverter.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Private.Uri.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.Loader.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Memory.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Reflection.Emit.Lightweight.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Reflection.Emit.ILGeneration.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Reflection.Primitives.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.CompilerServices.Unsafe.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Core.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Extensions.DependencyInjection.Abstractions.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.Controls.Xaml.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Extensions.Configuration.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Extensions.Configuration.Abstractions.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Extensions.Logging.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.AppCompat.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.Google.Android.Material.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.SwipeRefreshLayout.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Fragment.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Activity.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Lifecycle.ViewModel.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Lifecycle.Common.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.SavedState.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.DrawerLayout.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.CustomView.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Navigation.Runtime.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Net.Primitives.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Extensions.DependencyInjection.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Diagnostics.Tracing.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Xml.ReaderWriter.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Private.Xml.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Text.Encoding.Extensions.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Text.RegularExpressions.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de-DE/System.Private.CoreLib.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de-DE/System.Private.CoreLib.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de/System.Private.CoreLib.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de/System.Private.CoreLib.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Numerics.Vectors.dll
[apprececlervie] Explicit concurrent copying GC freed 444(61KB) AllocSpace objects, 0(0B) LOS objects, 50% free, 2002KB/4050KB, paused 45us,18us total 7.310ms
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.RecyclerView.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.CardView.dll
[OpenGLRenderer] RenderThread::requireGlContext()
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Loader.dll
[libEGL] EGL_ANDROID_blob_cache_path advertised, but unable to get eglSetBlobCachePathANDROID
[OpenGLRenderer] RenderThread::setGrContext()
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.Maui.Controls.Compatibility.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.Serialization.Json.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Private.DataContractSerialization.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.Serialization.Xml.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.Serialization.Primitives.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de-DE/System.Private.DataContractSerialization.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de-DE/System.Private.DataContractSerialization.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de/System.Private.DataContractSerialization.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly de/System.Private.DataContractSerialization.resources.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.CoordinatorLayout.dll
[DecorView] [INFO] isPopOver=false, config=true
[DecorView] updateCaptionType >> DecorView@3e5368[], isFloating=false, isApplication=true, hasWindowControllerCallback=true, hasWindowDecorCaption=false
[DecorView] setCaptionType = 0, this = DecorView@3e5368[]
[DecorView] getCurrentDensityDpi: from real metrics. densityDpi=640 msg=resources_loaded
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Lifecycle.LiveData.Core.dll
[apprececlervie] Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (unsupported, reflection, allowed)
[apprececlervie] Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (unsupported, reflection, allowed)
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.ViewPager2.dll
[CompatibilityChangeReporter] Compat change id reported: 171228096; UID 10738; state: ENABLED
[TabLayout] MODE_SCROLLABLE + GRAVITY_FILL is not supported, GRAVITY_START will be used instead
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.Lifecycle.Runtime.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.AndroidX.ViewPager.dll
[ViewRootImpl@1a07a2a[MainActivity]] setView = com.android.internal.policy.DecorView@3e5368 TM=true
[ViewRootImpl@1a07a2a[MainActivity]] Relayout returned: old=(0,0,1440,3040) new=(0,0,1440,3040) req=(1440,3040)0 dur=20 res=0x7 s={true 474001855168} ch=true fn=-1
[hw-ProcessState] Binder ioctl to enable oneway spam detection failed: Invalid argument
[OpenGLRenderer] eglCreateWindowSurface
[Gralloc4] mapper 4.x is not supported
[Gralloc3] mapper 3.x is not supported
[gralloc] Arm Module v1.0
[Gralloc4] allocator 4.x is not supported
[Gralloc3] allocator 3.x is not supported
[apprececlervie] Explicit concurrent copying GC freed 551(52KB) AllocSpace objects, 0(0B) LOS objects, 66% free, 3094KB/9238KB, paused 23us,18us total 8.066ms
[apprececlervie] Explicit concurrent copying GC freed 1453(54KB) AllocSpace objects, 0(0B) LOS objects, 64% free, 3311KB/9455KB, paused 24us,18us total 9.254ms
[ViewRootImpl@1a07a2a[MainActivity]] [DP] dp(1) 1 android.view.ViewRootImpl.reportNextDraw:11420 android.view.ViewRootImpl.performTraversals:4193 android.view.ViewRootImpl.doTraversal:2919 
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[CustomViewTarget] Glide treats LayoutParams.WRAP_CONTENT as a request for an image the size of this device's screen dimensions. If you want to load the original image and are ok with the corresponding memory cost and OOMs (depending on the input size), use .override(Target.SIZE_ORIGINAL). Otherwise, use LayoutParams.MATCH_PARENT, set layout_width and layout_height to fixed dimension, or use .override() with fixed dimensions.
[ViewRootImpl@1a07a2a[MainActivity]] [DP] pdf(0) 1 android.view.ViewRootImpl.lambda$addFrameCompleteCallbackIfNeeded$3$ViewRootImpl:4995 android.view.ViewRootImpl$$ExternalSyntheticLambda16.run:6 android.os.Handler.handleCallback:938 
[ViewRootImpl@1a07a2a[MainActivity]] [DP] rdf()
[ViewRootImpl@1a07a2a[MainActivity]] reportDrawFinished (fn: -1) 
[Choreographer] Skipped 62 frames!  The application may be doing too much work on its main thread.
[InsetsSourceConsumer] ensureControlAlpha: for ITYPE_NAVIGATION_BAR on com.companyname.mauiapprececlerview/crc64e03b45136a30f3e3.MainActivity
[InsetsSourceConsumer] ensureControlAlpha: for ITYPE_STATUS_BAR on com.companyname.mauiapprececlerview/crc64e03b45136a30f3e3.MainActivity
[ViewRootImpl@1a07a2a[MainActivity]] MSG_WINDOW_FOCUS_CHANGED 1 1
[InputMethodManager] startInputInner - Id : 0
[InputMethodManager] startInputInner - mService.startInputOrWindowGainedFocus
[OpenGLRenderer] Davey! duration=1089ms; Flags=1, FrameTimelineVsyncId=11445054, IntendedVsync=495917964512227, Vsync=495917997845559, InputEventId=0, HandleInputStart=495918000934558, AnimationStart=495918000940058, PerformTraversalsStart=495918000942943, DrawStart=495919006731250, FrameDeadline=495917981178893, FrameInterval=495918000883981, FrameStartTime=16666666, SyncQueued=495919024549058, SyncStart=495919024661519, IssueDrawCommandsStart=495919026216558, SwapBuffers=495919051580058, FrameCompleted=495919054084865, DequeueBufferDuration=31192, QueueBufferDuration=1856807, GpuCompleted=495919052979788, SwapBuffersCompleted=495919054084865, DisplayPresentTime=0, 
[InputMethodManager] startInputInner - Id : 0
Thread started: <Thread Pool> #9
Thread started: <Thread Pool> #10
Thread started: <Thread Pool> #11
Thread started: <Thread Pool> #12
Thread started: <Thread Pool> #13
Thread started: <Thread Pool> #14
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 0
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 1
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.Intrinsics.dll
Loaded assembly: /data/data/com.companyname.mauiapprececlerview/files/.__override__/System.Runtime.Intrinsics.dll [External]
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 0
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 1
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 0
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 1
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 0
Thread started: <Thread Pool> #15
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 1
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 0
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 1
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 0
[ViewRootImpl@1a07a2a[MainActivity]] ViewPostIme pointer 1
[Bitmap] Called hasAlpha() on a recycle()'d bitmap! This is undefined behavior!
[Bitmap] Called getConfig() on a recycle()'d bitmap! This is undefined behavior!
[AndroidRuntime] Shutting down VM
[AndroidRuntime] FATAL EXCEPTION: main
[AndroidRuntime] Process: com.companyname.mauiapprececlerview, PID: 2014
[AndroidRuntime] java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4a900c7
[AndroidRuntime] 	at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:87)
[AndroidRuntime] 	at android.graphics.RecordingCanvas.throwIfCannotDraw(RecordingCanvas.java:263)
[AndroidRuntime] 	at android.graphics.BaseRecordingCanvas.drawBitmap(BaseRecordingCanvas.java:97)
[AndroidRuntime] 	at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:560)
[AndroidRuntime] 	at android.widget.ImageView.onDraw(ImageView.java:1444)
[AndroidRuntime] 	at android.view.View.draw(View.java:23898)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22767)
[AndroidRuntime] 	at android.view.View.draw(View.java:23628)
[AndroidRuntime] 	at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22753)
[AndroidRuntime] 	at android.view.View.draw(View.java:23628)
[AndroidRuntime] 	at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22753)
[AndroidRuntime] 	at android.view.View.draw(View.java:23628)
[AndroidRuntime] 	at android.view.ViewGroup.drawChild(ViewGroup.java:5355)
[AndroidRuntime] 	at androidx.recyclerview.widget.RecyclerView.drawChild(RecyclerView.java:5204)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:5112)
[AndroidRuntime] 	at android.view.View.draw(View.java:23901)
[AndroidRuntime] 	at androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4603)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22767)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5339)
[AndroidRuntime] 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5311)
[AndroidRuntime] 	at android.view.View.updateDisplayListIfDirty(View.java:22714)
[AndroidRuntime] 	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:602)
[AndroidRuntime] 	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:608)
[AndroidRuntime] 	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:684)
[AndroidRuntime] 	at android.view.ViewRootImpl.draw(ViewRootImpl.java:5440)
[AndroidRuntime] 	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5148)
[AndroidRuntime] 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4212)
[AndroidRuntime] 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2919)
[AndroidRuntime] 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10491)
[AndroidRuntime] 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1108)
[AndroidRuntime] 	at android.view.Choreographer.doCallbacks(Choreographer.java:866)
[AndroidRuntime] 	at android.view.Choreographer.doFrame(Choreographer.java:797)
[AndroidRuntime] 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1092)
[AndroidRuntime] 	at android.os.Handler.handleCallback(Handler.java:938)
[AndroidRuntime] 	at android.os.Handler.dispatchMessage(Handler.java:99)
[AndroidRuntime] 	at android.os.Looper.loopOnce(Looper.java:226)
[AndroidRuntime] 	at android.os.Looper.loop(Looper.java:313)
[AndroidRuntime] 	at android.app.ActivityThread.main(ActivityThread.java:8663)
[AndroidRuntime] 	at java.lang.reflect.Method.invoke(Native Method)
[AndroidRuntime] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
[AndroidRuntime] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
**Java.Lang.RuntimeException:** 'Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4a900c7'

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 16

Most upvoted comments

We’ve moved this issue to the Backlog milestone. This means that it is not going to be worked on for the coming release. We will reassess the backlog following the current release and consider this item at that time. To learn more about our issue management process and to have better expectation regarding different types of issues you can read our Triage Process.

try this code in your MauiProgram class


            //return builder.Build();

            /* -- the code below from https://github.com/dotnet/maui/issues/9011#issuecomment-1333534818 -- */

#if __ANDROID__
        ImageHandler.Mapper.PrependToMapping(nameof(Microsoft.Maui.IImage.Source), (handler, view) => PrependToMappingImageSource(handler, view));
#endif

            return builder.Build();
        }

#if __ANDROID__
    public static void PrependToMappingImageSource(IImageHandler handler, Microsoft.Maui.IImage image)
    {
        handler.PlatformView?.Clear();
    }
#endif
    }
}

@Phantom-KNA for now - not that I know. But maybe you can try use .NET 7 which was releases a couple of days ago? They mentioned CollectionView improvements, maybe also some fixes in the new relates MAUI version… https://devblogs.microsoft.com/dotnet/announcing-dotnet-7/#net-maui https://devblogs.microsoft.com/dotnet/dotnet-maui-dotnet-7/