内存泄漏处理Xamarin.Forms我的应用程序有内存泄漏问题,我用Xamarin.Forms创建的。我的应用程序包含一个带图像的ListView。如果我单击某个项目并返回到ListPage,我可以在“输出”窗口中看到内存已用完。我试过在我的ContentPage的OnDisappearing()中调用GC.Collect()。我在Android项目中看到了base.Dispose()。但我不知道如何使用它。ArticleListPage.xaml我曾经遇到过这个问题,这篇文章为我解决了它。本上你需要制作一个自定义冲洗器并将其放在你的机器人项目中:usingSystem;使用System.Collections.Generic;使用System.Linq;使用System.Reflection;使用系统文本;使用Android.App;使用Android.Content;使用Android.OS;使用Android.Runtime;使用Android.Views;使用Android.Views.InputMethods;使用Android.Widget;使用Android.Util;使用Application.Droid.CustomControls;使用ApplicationClient.CustomControls;使用Xamarin.Forms;使用Xamarin.Forms.Platform.Android;[程序集:ExportRenderer(typeof(ApplicationClient.CustomControls.LSImage),typeof(LSImageRenderer))]namespaceApplication.Droid.CustomControls{publicclassLSImageRenderer:ImageRenderer{Pagepage;导航页面导航页面;protectedoverridevoidOnElementChanged(ElementChangedEventArgse){base.OnElementChanged(e);如果(e.OldElement==null){如果(GetContainingViewCell(e.NewElement)!=null){page=GetContainingPage(e.NewElement);if(page.ParentisTabbedPage){page.Disappearing+=PageContainedInTabbedPageDisapearing;返回;}navigPage=GetContainingNavigationPage(页面);if(navigPage!=null)navigPage.Popped+=OnPagePopped;}elseif((page=GetContainingTabbedPage(e.NewElement))!=null){page.Disappearing+=PageContainedInTabbedPageDisapearing;}}}voidPageContainedInTabbedPageDisapearing(objectsender,EventArgse){this.Dispose(true);page.Disappearing-=PageContainedInTabbedPageDisapearing;}protectedoverridevoidDispose(booldisposing){Log.Info("****LSImageRenderer*****","Imagegotdisposed");base.Dispose(处置);}privatevoidOnPagePopped(objects,NavigationEventArgse){if(e.Page==page){this.Dispose(true);navigPage.Popped-=OnPagePopped;}}privatePageGetContainingPage(Xamarin.Forms.Elementelement){元素parentElement=element.ParentView;如果(typeof(Page).IsAssignableFrom(parentElement.GetType()))返回(Page)parentElement;否则返回GetContainingPage(parentEle换货);}privateViewCellGetContainingViewCell(Xamarin.Forms.Elementelement){元素parentElement=element.Parent;如果(parentElement==null)返回null;如果(typeof(ViewCell).IsAssignableFrom(parentElement.GetType()))返回(ViewCell)parentElement;否则返回GetContainingViewCell(parentElement);}privateTabbedPageGetContainingTabbedPage(Elementelement){元素parentElement=element.Parent;如果(parentElement==null)返回null;如果(typeof(TabbedPage).IsAssignableFrom(parentElement.GetType()))返回(TabbedPage)parentElement;否则返回GetContainingTabbedPage(parentElement);}privateNavigationPageGetContainingNavigationPage(Elementelement){元素parentElement=element.Parent;如果(parentElement==null)返回null;如果(typeof(NavigationPage).IsAssignableFrom(parentElement.GetType()))返回(NavigationPage)parentElement;否则返回GetContainingNavigationPage(parentElement);}}}然后扩展图像类并将其放在PCL中,或者放在页面所在的位置namespaceApplicationClient.CustomControls{publicclassLSImage:Image{}}然后您必须修改XAML才能使用它。以上就是C#学习教程:内存泄漏处理Xamarin.Forms分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
