xamarin - 使用 Xamarin Forms 在 IOS 中接收内存警告

标签 xamarin xamarin.forms

如何使用 xamarin 表单捕获 DidReceiveMemoryWarning。

在 xamarin studio 中调试时,我可以在应用程序输出中看到它们,但我找不到如何捕获事件或如何查看使用了多少内存。

我尝试了 AppDomain.CurrentDomain.MonitoringTotalAllocationMemorySize 但它抛出了未实现的异常

最佳答案

有 3 种方法可以在 iOS 中捕获内存警告(或者至少是我所知道的:)

这三种方式是:

  1. 在 ViewController 中,您可以重写 DidReceiveMemoryWarning() 并在那里处理警告。这对于 Xamarin.Forms 来说并不是最好的方法,因为您没有 UIViewController 来重写这些方法,因此请继续选择选项 2 和 3。

  2. 在您的 AppDelegate 中,重写 ReceiveMemoryWarning 方法。当 iOS 内存不足时,该函数将会被触发。您可以将此方法连接到 PCL 代码上的任何代码,或者仅在特定于平台的项目中处理它。

    public override void ReceiveMemoryWarning (UIApplication application)
    {
            // handle low memory warnings here
    }
    
  3. 您可以使用 iOS 通知中心在出现内存警告时接收通知。这可以这样做:

    // Method style void Callback (NSNotification notification) 
    {
            Console.WriteLine ("Received a notification UIApplication", notification);
    }
    
    void Setup () 
    {
            NSNotificationCenter.DefaultCenter.AddObserver (UIApplication.DidReceiveMemoryWarningNotification, Callback); 
    }
    

然后您可以将此“CallBack”连接到您的 PCL 项目以释放​​一些内存。

您还可以使用模拟器在模拟器上进行测试

Hardware >> Simulate Memory Warnings

关于xamarin - 使用 Xamarin Forms 在 IOS 中接收内存警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25547422/

相关文章:

c# - Xamarin:适用于 Android 和 Windows UWP 的 Xamarin 表单中分组列表的垂直字母索引(跳转列表)

c# - SQLiteNet 索引和 Lambda 表达式

c# - 如何使用 PopAsync 将数据传递到上一页?

android - 我可以阻止来自 Xamarin.forms 的键盘建议吗

c# - 推送通知上的应用程序重新加载单击 Xamarin Forms

c# - Xamarin ListView 图像在滚动上消失

xamarin - 按钮上的图像可通过按钮调整大小

api - 如何从Token获取Google用户信息

c# - Xamarin 表单在按钮单击事件处理程序上检索学生详细信息 ID

android - 使用 Xamarin Forms 设置 Android 和 iOS 的推送通知角标(Badge)时遇到问题