Xamarin.android Xamarin.Forms-Android中的内存不足异常
我开发的应用程序是一个调查应用程序。我的应用程序的导航类似于此Page1-->Page2-->Page3-->Page4-->Page1。当从一个页面导航到另一个页面时,每次都会占用堆空间,从而导致OOM异常 我试过了Xamarin.android Xamarin.Forms-Android中的内存不足异常,xamarin.android,xamarin.forms,Xamarin.android,Xamarin.forms,我开发的应用程序是一个调查应用程序。我的应用程序的导航类似于此Page1-->Page2-->Page3-->Page4-->Page1。当从一个页面导航到另一个页面时,每次都会占用堆空间,从而导致OOM异常 我试过了 OnDisappearing()中的GC.Collect()在每个页面中都没有帮助 在MainActivity中使用了override OnLowMemory() 已删除高分辨率图像 我在using块中也使用了按钮渲染器的位图,除此之外,我在其他任何地方都没有使用位图 如何
- OnDisappearing()中的GC.Collect()在每个页面中都没有帮助
- 在MainActivity中使用了override OnLowMemory()
- 已删除高分辨率图像
任何人都可以指出一些有用的方向来克服这个问题吗???问题是表单将页面实例保存在导航堆栈的内存中。 当导航到下一页时,我会尽可能多地配置资源(好吧,图像可能是最大的内存消耗),并在页面再次进入焦点时恢复它们。 垃圾收集器将不会有帮助,因为所有内容仍被引用 也就是说,我认为导航做得不够好。你可以做的一件事就是投下你的一票,并希望Xamarin最终会改进它
更新:我错过了OP将在最后进入根页面的消息,因此如果用户继续向前导航,这个答案将适用。这不是吗。Navigation.PopModalAsync()将删除已创建的实例??。将每个按钮设置为null会有帮助吗?哦,对不起,我错过了,您将在最后返回根目录。尝试延迟GC.Collect,在这种情况下,正如我在这里所描述的,并且在更新到1.2.3-pre4之后,可能仍然会抛出一个in-OOM异常。重新访问页面会不断增加堆空间。将尝试延迟GC并重新开始。
public override void OnLowMemory()
{
GC.Collect ();
}