导致“内存违规”的MvxImageView.SetImageBitmap

时间:2016-10-13 21:43:29

标签: xamarin.android android-imageview mvvmcross

我在iOS中构建了一个应用程序,现在在Android中构建应用程序。我基本上已经完成了应用程序,但我在应用程序中遇到了一个非常一致的问题。当应用程序崩溃时,我将通过应用程序点击各种页面。它似乎很随意,似乎是一个内存问题。每个“页面”在页面上可能有0-2个图像,但没有什么主要的(小的png文件)。我正在使用android ImageView和MvxImageView的组合。我正在通过绑定ImageUrl设置MvxImageView,如下所示:

local: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

非常感谢任何帮助。当我说上面的一致时,基本上在应用程序中“锤击”的30秒内会发生一些事情。

设备:三星Galaxy Tab A上的大部分测试都来自上述例外情况。还测试了较旧的LG手机和最新的Nexus。 LG手机出现同样的错误。最新的Nexus我得到了错误但不一致。我可以在应用程序上停留一段时间,但没有任何问题。

1 个答案:

答案 0 :(得分:0)

虽然这并没有解决我对MvxImageView的问题,但我尝试了Picasso。我创建了一个PicassoImageView对象并创建了一个公共的“ImageURL”,它允许我仍然使用MvvmCross绑定。我没有看到错误。