2016-10-13 53 views
2

我已经在iOS中构建了一个应用程序,现在在Android中构建应用程序。我基本上完成了应用程序,但我在应用程序中遇到了一个非常一致的问题。当应用程序崩溃时,我将通过应用程序点击各种页面。这似乎很随机,似乎是一个记忆问题。每个“页面”在页面上可能有0-2张图片,但没有什么特别的(小的png文件)。我正在使用android ImageView和MvxImageView的组合。我通过有约束力的ImageUrl这样设置MvxImageView:MvxImageView.SetImageBitmap导致“内存违规”

地方: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我得到了错误,但不一致。有时候我可以在应用程序中放置一段时间而没有任何问题。

+0

你使用'MvvmCross DownloadCache'和'File'插件吗?这些可以在'NuGet'上找到。 – Pilatus

+0

是的,我正在使用这两个插件。 –

+0

你可以在https://github.com/mvvmcros/mvvmcross-plugins/issues上制作一个repro示例并提交一个bug吗?或者,您可以尝试使用类似FFImageLoading的东西来查看是否存在。 FFImageLoading具有MvvmCross特定的ImageView,您可以将其绑定到MvxImageView。 – Cheesebaron

回答

0

虽然这并没有解决我的问题与MvxImageView,我试过毕加索。我创建了一个PicassoImageView对象并创建了一个公共的“ImageURL”,它允许我仍然使用MvvmCross绑定。自那以后我没有看到这个错误。