/**
         * Called when the PDF is loaded
         */
        public void LoadComplete(PdfFile pdfFile)
        {
            state        = State.Loaded;
            this.PdfFile = pdfFile;

            if (!renderingHandlerThread.IsAlive)
            {
                renderingHandlerThread.Start();
            }

            RenderingHandler = new RenderingHandler(renderingHandlerThread.Looper,
                                                    this);
            RenderingHandler.Start();

            if (ScrollHandle != null)
            {
                ScrollHandle.SetupLayout(this);
                isScrollHandleInit = true;
            }

            dragPinchManager.Enable();

            Callbacks.CallOnLoadComplete(this, new LoadCompletedEventArgs(pdfFile.PagesCount));

            JumpTo(DefaultPage, false);
        }
        public void Recycle()
        {
            waitingDocumentConfigurator = null;
            animationManager.StopAll();
            dragPinchManager.Disable();
            // Stop tasks
            if (RenderingHandler != null)
            {
                RenderingHandler.Stop();
                RenderingHandler.RemoveMessages(RenderingHandler.MsgRenderTask);
            }

            decodingAsyncTask?.Cancel();

            // Clear caches
            CacheManager.Recycle();

            if (ScrollHandle != null && isScrollHandleInit)
            {
                ScrollHandle.DestroyLayout();
            }

            if (PdfFile != null)
            {
                PdfFile.Dispose();
                PdfFile = null;
            }

            RenderingHandler   = null;
            ScrollHandle       = null;
            isScrollHandleInit = false;
            CurrentXOffset     = CurrentYOffset = 0;
            Zoom       = 1f;
            IsRecycled = true;
            Callbacks  = new Callbacks();
            state      = State.Default;
        }