MvxImageView.SetImageBitmap 导致 "Memory violation"
MvxImageView.SetImageBitmap causing "Memory violation"
我在 iOS 中构建了一个应用程序,现在在 Android 中构建应用程序。我基本上已经完成了应用程序,但我 运行 遇到了应用程序中一个非常一致的问题。当应用程序崩溃时,我将通过应用程序访问各种页面。这似乎是非常随机的,而且似乎是一个内存问题。每个 "page" 在页面上可能有 0-2 张图片,但没什么大不了的(小的 png 文件)。我正在使用 android ImageView 和 MvxImageView 的组合。我通过像这样绑定 ImageUrl 来设置 MvxImageView:
本地:MvxBind="ImageUrl CurrencyImage"
这是我得到的异常:
[mono-rt] Stacktrace:
[mono-rt]
[mono-rt] at <unknown> <0xffffffff>
[mono-rt] at (wrapper managed-to-native) Java.Interop.NativeMethods.java_interop_jnienv_call_nonvirtual_void_method_a (intptr,intptr&,intptr,intptr,intptr,Java.Interop.JniArgumentValue*) <0x0005b>
[mono-rt] at Java.Interop.JniEnvironment/InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference,Java.Interop.JniObjectReference,Java.Interop.JniMethodInfo,Java.Interop.JniArgumentValue*) [0x0008f] in /Users/builder/data/lanes/3819/96c7ba6c/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:12079
[mono-rt] at Java.Interop.JniPeerMembers/JniInstanceMethods.InvokeVirtualVoidMethod (string,Java.Interop.IJavaPeerable,Java.Interop.JniArgumentValue*) [0x00068] in /Users/builder/data/lanes/3819/96c7ba6c/source/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:31
[mono-rt] at Android.Widget.ImageView.SetImageBitmap (Android.Graphics.Bitmap) [0x0002c] in /Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/src/Mono.Android/platforms/android-24/src/generated/Android.Widget.ImageView.cs:1026
[mono-rt] at MvvmCross.Binding.Droid.Views.MvxImageView.SetImageBitmap (Android.Graphics.Bitmap) <IL 0x00032, 0x0019b>
[mono-rt] at MvvmCross.Binding.Droid.Views.MvxImageView/<>c__DisplayClass19_0.<ImageHelperOnImageChanged>b__0 () <IL 0x00011, 0x000b7>
[mono-rt] at Java.Lang.Thread/RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/3819/96c7ba6c/source/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36
[mono-rt] at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/src/Mono.Android/platforms/android-24/src/generated/Java.Lang.IRunnable.cs:81
[mono-rt] at (wrapper dynamic-method) object.037ff22d-dd39-45fa-8726-c673a7d6897c (intptr,intptr) <IL 0x00011, 0x0003b>
[mono-rt] at (wrapper native-to-managed) object.037ff22d-dd39-45fa-8726-c673a7d6897c (intptr,intptr) <IL 0x00021, 0x000ef>
这是我在 DDMS 中看到的审计:
10-13 17:26:06.213: E/audit(2793): type=1701 msg=audit(1476393966.213:869): auid=4294967295 uid=10198 gid=10198 ses=4294967295 subj=u:r:untrusted_app:s0:c512,c768 pid=14236 comm="APPNAME.droid" reason="memory violation" sig=11
如有任何帮助,我们将不胜感激。当我在上面说一致时,基本上在应用程序中 "hammering" 的 30 秒内会发生一些事情。
设备:在 Samsung Galaxy Tab A 上进行的大部分测试均来自上述异常。还在旧版 LG phone 和最新版 Nexus 上进行了测试。 LG phone 得到同样的错误。最新的 Nexus 我遇到了错误,但并不一致。我有时可以在应用程序上使用一段时间而没有任何问题。
虽然这没有解决我的 MvxImageView 问题,但我尝试了 Picasso。我创建了一个 PicassoImageView 对象并创建了一个 public "ImageURL" 允许我仍然使用 MvvmCross 绑定。从那以后我再也没有看到错误。
我在 iOS 中构建了一个应用程序,现在在 Android 中构建应用程序。我基本上已经完成了应用程序,但我 运行 遇到了应用程序中一个非常一致的问题。当应用程序崩溃时,我将通过应用程序访问各种页面。这似乎是非常随机的,而且似乎是一个内存问题。每个 "page" 在页面上可能有 0-2 张图片,但没什么大不了的(小的 png 文件)。我正在使用 android ImageView 和 MvxImageView 的组合。我通过像这样绑定 ImageUrl 来设置 MvxImageView:
本地:MvxBind="ImageUrl CurrencyImage"
这是我得到的异常:
[mono-rt] Stacktrace:
[mono-rt]
[mono-rt] at <unknown> <0xffffffff>
[mono-rt] at (wrapper managed-to-native) Java.Interop.NativeMethods.java_interop_jnienv_call_nonvirtual_void_method_a (intptr,intptr&,intptr,intptr,intptr,Java.Interop.JniArgumentValue*) <0x0005b>
[mono-rt] at Java.Interop.JniEnvironment/InstanceMethods.CallNonvirtualVoidMethod (Java.Interop.JniObjectReference,Java.Interop.JniObjectReference,Java.Interop.JniMethodInfo,Java.Interop.JniArgumentValue*) [0x0008f] in /Users/builder/data/lanes/3819/96c7ba6c/source/Java.Interop/src/Java.Interop/Java.Interop/JniEnvironment.g.cs:12079
[mono-rt] at Java.Interop.JniPeerMembers/JniInstanceMethods.InvokeVirtualVoidMethod (string,Java.Interop.IJavaPeerable,Java.Interop.JniArgumentValue*) [0x00068] in /Users/builder/data/lanes/3819/96c7ba6c/source/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:31
[mono-rt] at Android.Widget.ImageView.SetImageBitmap (Android.Graphics.Bitmap) [0x0002c] in /Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/src/Mono.Android/platforms/android-24/src/generated/Android.Widget.ImageView.cs:1026
[mono-rt] at MvvmCross.Binding.Droid.Views.MvxImageView.SetImageBitmap (Android.Graphics.Bitmap) <IL 0x00032, 0x0019b>
[mono-rt] at MvvmCross.Binding.Droid.Views.MvxImageView/<>c__DisplayClass19_0.<ImageHelperOnImageChanged>b__0 () <IL 0x00011, 0x000b7>
[mono-rt] at Java.Lang.Thread/RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/3819/96c7ba6c/source/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36
[mono-rt] at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/3819/96c7ba6c/source/monodroid/src/Mono.Android/platforms/android-24/src/generated/Java.Lang.IRunnable.cs:81
[mono-rt] at (wrapper dynamic-method) object.037ff22d-dd39-45fa-8726-c673a7d6897c (intptr,intptr) <IL 0x00011, 0x0003b>
[mono-rt] at (wrapper native-to-managed) object.037ff22d-dd39-45fa-8726-c673a7d6897c (intptr,intptr) <IL 0x00021, 0x000ef>
这是我在 DDMS 中看到的审计:
10-13 17:26:06.213: E/audit(2793): type=1701 msg=audit(1476393966.213:869): auid=4294967295 uid=10198 gid=10198 ses=4294967295 subj=u:r:untrusted_app:s0:c512,c768 pid=14236 comm="APPNAME.droid" reason="memory violation" sig=11
如有任何帮助,我们将不胜感激。当我在上面说一致时,基本上在应用程序中 "hammering" 的 30 秒内会发生一些事情。
设备:在 Samsung Galaxy Tab A 上进行的大部分测试均来自上述异常。还在旧版 LG phone 和最新版 Nexus 上进行了测试。 LG phone 得到同样的错误。最新的 Nexus 我遇到了错误,但并不一致。我有时可以在应用程序上使用一段时间而没有任何问题。
虽然这没有解决我的 MvxImageView 问题,但我尝试了 Picasso。我创建了一个 PicassoImageView 对象并创建了一个 public "ImageURL" 允许我仍然使用 MvvmCross 绑定。从那以后我再也没有看到错误。