public void Destroy()
        {
            if (_weakDecorView != null && _weakDecorView.TryGetTarget(out var mDecorView))
            {
                UnsubscribeToPreDraw(mDecorView);
            }

            Release();
            _weakDecorView = null;
        }
        public void SetRootView(View rootView)
        {
            var mDecorView = GetRootView();

            if (mDecorView != rootView)
            {
                UnsubscribeToPreDraw(mDecorView);

                _weakDecorView = new JniWeakReference <View>(rootView);

                if (IsAttachedToWindow)
                {
                    OnAttached(rootView);
                }
            }
        }
        public void SetRootView(View rootView)
        {
            var mDecorView = GetRootView();

            if (mDecorView != rootView)
            {
                mDecorView?.ViewTreeObserver.RemoveOnPreDrawListener(preDrawListener);

                _weakDecorView = new JniWeakReference <View>(rootView);

                if (IsAttachedToWindow)
                {
                    OnAttached(rootView);
                }
            }
        }
 public PreDrawListener(RealtimeBlurView blurView)
 {
     _weakBlurView = new JniWeakReference <RealtimeBlurView>(blurView);
 }