Las*_*sen 5 c# android xamarin.android xamarin.forms
我在一些旧Android设备上运行我的应用程序时遇到一些问题,因此我下载了一段Visual Studio Professionel,就像它一样Diagnostics Tools.
我尝试在我的应用程序中做一些简单的事情,我觉得它很吓人,Xamarin.Forms.BindableProperty+BindablePropertyContext需要一个2.196.088UWP 的大小(当然是字节),你可以在下面的screendump看到.
在这个例子中,我已经justed浏览了5页.在其中的两个页面上ListViews,其中一个已被清除3次,并填充了新数据.
GC.Collect()清除后我必须打电话ListView吗?
小智 1
我遇到过类似的问题 - 浏览页面几次导致了 OutOfMemoryException。对我来说,解决方案是通过显式 Dispose() 调用来实现页面的自定义渲染。
public class CustomPageRenderer : PageRenderer
{
private NavigationPage _navigationPage;
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
_navigationPage = GetNavigationPage(Element);
SubscribeToPopped(_navigationPage);
}
private void SubscribeToPopped(NavigationPage navigationPage)
{
if (navigationPage == null)
{
return;
}
navigationPage.Popped += OnPagePopped;
}
protected override void Dispose(bool disposing)
{
Log.Info("===========Dispose called===========");
base.Dispose(disposing);
}
private void OnPagePopped(object sender, NavigationEventArgs args)
{
if (args.Page != Element)
{
return;
}
Dispose(true);
_navigationPage.Popped -= OnPagePopped;
}
private static NavigationPage GetNavigationPage(Element element)
{
if (element == null)
{
return null;
}
while (true)
{
if (element.Parent == null || element.Parent.GetType() == typeof(NavigationPage))
{
return element.Parent as NavigationPage;
}
element = element.Parent;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以在这里查看,但是您需要小心处理图像,如果它们的父页面位于导航堆栈中并且您想返回,则可能会导致一些问题。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |