android - PropertyChangedEventHandler 导致内存泄漏

标签 android memory-leaks xamarin eventhandler

我在 xamarin.forms 中创建了 Android 应用程序,但问题是 PropertyChangedEventHandler 导致内存泄漏。

我的代码:

 protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;

          if (handler != null)
    try {
         handler(this, new PropertyChangedEventArgs(propertyName));
        } catch (Exception ex) 
        {

        }

    }

我在 xamarin.profiler 中测试内存应用程序,结果是:

enter image description here

最佳答案

看来您的实现很可靠。在 C# 6 中调用事件的另一种线程安全方式是:

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged( string propertyName )
    {
        PropertyChangedEventArgs e = new PropertyChangedEventArgs( propertyName );
        PropertyChanged?.Invoke( this, e );
    }

我猜事件订阅逻辑可能是罪魁祸首。请记住,事件发布者让他们的订阅者保持活力。这是一篇关于事件订阅和潜在内存泄漏的好文章。 Understanding and Avoiding Memory-Leaks

关于android - PropertyChangedEventHandler 导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33033269/

相关文章:

android - 如何强制 ViewGroup 从屏幕上绘制?

android - JNI 从 C++ 调用 Java 方法

android - 如何查找应用程序对 DevicePolicyManager.setApplicationRestrictions 的可用限制

c++ - 使用析构函数删除成员 vector 中的堆分配对象

android - 将 Xamarin Forms View 呈现为 Android View 而不指定大小

java - 如何检查android设备是否可以连接网络?

javascript - 如何解决javascript中settimeout内存泄漏问题

java - 无法访问可移植类库中的类

android - 如何将 Android.Resource.Color 转换为 Android.Graphics.Color

c# - 我必须在 C# 中处理参数吗?