Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CollectionView throws Recycled-Exception while loading Images with Web-URL #9712

Closed
fabEps opened this issue Aug 27, 2022 · 16 comments · Fixed by #12310
Closed

CollectionView throws Recycled-Exception while loading Images with Web-URL #9712

fabEps opened this issue Aug 27, 2022 · 16 comments · Fixed by #12310
Labels
area-controls-collectionview CollectionView, CarouselView, IndicatorView area-controls-image Image control fixed-in-7.0.59 Look for this fix in 7.0.59! fixed-in-7.0.100 fixed-in-7.0.101 fixed-in-8.0.0-preview.1.7762 Look for this fix in 8.0.0-preview.1.7762! platform/android 🤖 t/bug Something isn't working

Comments

@fabEps
Copy link

fabEps commented Aug 27, 2022

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'
@fabEps fabEps added the t/bug Something isn't working label Aug 27, 2022
@Eilon Eilon added the area-controls-collectionview CollectionView, CarouselView, IndicatorView label Aug 29, 2022
@fabEps
Copy link
Author

fabEps commented Aug 30, 2022

Same happens if I try to download all images before and cache them all into files and set following XAML:

<Image.Source>
   <FileImageSource File="{Binding FilePath}"/>
</Image.Source>

So it's not related to the UriSource

@fabEps
Copy link
Author

fabEps commented Aug 30, 2022

Related issues:
#9011
#8809

But those attempts are not working for me, tried the different approaches from the commenters - without success. The only workaround, which is totally not a solution for me, is to set a fix height which should not be more than 250dp.

@jsuarezruiz jsuarezruiz added the area-controls-image Image control label Sep 1, 2022
@ghost ghost added the legacy-area-controls Label, Button, CheckBox, Slider, Stepper, Switch, Picker, Entry, Editor label Sep 1, 2022
@fabEps
Copy link
Author

fabEps commented Sep 7, 2022

Can anyone provide a workaround for this? I tried different approaches (e.g. via custom handler to deactivate recycling) but the only solution I is to set a fix height. On tablets, this won't work, the images can't be displayed without cropping them.

@PureWeen PureWeen added this to the Backlog milestone Sep 8, 2022
@ghost
Copy link

ghost commented Sep 8, 2022

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.

@xtuzy
Copy link

xtuzy commented Sep 24, 2022

Today i use Image show PDF image, when i change page and set new page Image, i get this bug: "Java.Lang.RuntimeException: 'Canvas: trying to use a recycled bitmap android.graphics.Bitmap".
My set image code:

this.Dispatcher.Dispatch(() =>
{
    PageImage.Source = ImageSource.FromStream(() => stream);
    WindowPage.RequestReLayout();
});

I feel this is when change Image, old Image still use old bitmap, have old bitmap reference, so i change my code, then this bug disappear when change page:

this.Dispatcher.Dispatch(() =>
{
      PageImage.Source  = null;
      PageImage.Source = ImageSource.FromStream(() => stream);
      WindowPage.RequestReLayout();
});

Hope it can help someone.

@Phantom-KNA
Copy link

Any fix for this, xD I'm going to have to migrate the project to Xamarin.

@fabEps
Copy link
Author

fabEps commented Nov 11, 2022

@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/

@Phantom-KNA
Copy link

Thx my friend i try!!!

@mkatsarow
Copy link

It's still crashing in .NET7. I have CarouselView with ItemSource = {Binding Example} with five different Images. Sometimes when I try to scroll them fast the app crashes with "java.lang.runtimeexception: 'canvas: trying to use a recycled bitmap android.graphics.bitmap@d9cfbb1' net maui".
Just to note that caching the images don't work, so we should look for another fix/workaround.
Regards,
Mihail

@mkatsarow
Copy link

Hello everyone, I've set the WidthRequest & HeightRequest of the images of my CarouselView and that solve the problem. Please find below an example of my Image and my data biding in C#. Hope this gonna solve your issue too.
Regards,
Mihail K

image
image

@Phantom-KNA
Copy link

Phantom-KNA commented Nov 14, 2022

@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/

Hello friend, in my project I was using as ItemSource of the Collection View to objects of type:
ObservableCollection<TypeC>
I changed it to type:
List<TypeC>
Recompile the project and delete the application in the emulator, until the moment that loaded 20 images with different sizes, say in width and height.
And this recycler error has not been thrown again.
This week I will test adding 100 images to the CollectionView, I hope this information is useful.
All this is clear when migrating the project to .NET 7.

@asabbah1
Copy link

Hello Everyone,
Even with .NET 7, still crashing, also set height and width doesn't work.

@Schinwinkwinsky
Copy link

I solved my problem using Image.MinimumHeightRequest property. Without it, I was having the problem on Android.

                <CollectionView.ItemTemplate>
                    <DataTemplate x:DataType="pokeApi:Pokemon">
                        <StackLayout Padding="10">
                            <Image Source="{Binding Sprites.Other.OfficialArtwork.FrontDefault}"
                                   MinimumHeightRequest="50"/>
                            <Label Text="{Binding Name, Converter={StaticResource TextCaseConverter}}"
                                   HorizontalTextAlignment="Center"
                                   FontFamily="LobsterRegular"
                                   FontSize="Medium"/>
                        </StackLayout>
                    </DataTemplate>
                </CollectionView.ItemTemplate>

@ghost
Copy link

ghost commented Jan 19, 2023

Hello lovely human, thank you for your comment on this issue. Because this issue has been closed for a period of time, please strongly consider opening a new issue linking to this issue instead to ensure better visibility of your comment. Thank you!

@AkramAlQaifi
Copy link

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
    }
}

@ghost
Copy link

ghost commented Feb 6, 2023

Hello lovely human, thank you for your comment on this issue. Because this issue has been closed for a period of time, please strongly consider opening a new issue linking to this issue instead to ensure better visibility of your comment. Thank you!

@samhouts samhouts added the fixed-in-7.0.59 Look for this fix in 7.0.59! label Feb 16, 2023
@samhouts samhouts modified the milestones: Backlog, .NET 7 + Servicing Feb 16, 2023
@samhouts samhouts added the fixed-in-8.0.0-preview.1.7762 Look for this fix in 8.0.0-preview.1.7762! label Feb 22, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Mar 24, 2023
@Eilon Eilon removed the legacy-area-controls Label, Button, CheckBox, Slider, Stepper, Switch, Picker, Entry, Editor label May 10, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-controls-collectionview CollectionView, CarouselView, IndicatorView area-controls-image Image control fixed-in-7.0.59 Look for this fix in 7.0.59! fixed-in-7.0.100 fixed-in-7.0.101 fixed-in-8.0.0-preview.1.7762 Look for this fix in 8.0.0-preview.1.7762! platform/android 🤖 t/bug Something isn't working
Projects
None yet