vuandroid pef 阅读器 pdf文件->bitmap 整体流程分析

在DocumentView line 70  new  所有的Page
 
--->
在BaseViewerActivity 中的onCreate方法里
调用DocumentView的showDocument方法,该方法里启动线程做:
     init()
     updatePageVisibility(): 调用Page里的PageNodeTree的updateVisibility()-->
        PageTreeNode 的line 30 行->50行
  
        line42:  decodePageTreeNode();


代码:

  1.创建DecodeService

      DecodeService decodeService = new DecodeServiceBase(new PdfContext());
  2.创建DocumentView:
      
      DocumentView documentView = new DocumentView( );
 3.  建立decodeService和documentView之间的依赖关系:
     
       decodeService.setContainerView(documentView);
       documentView.setDecodeService(decodeService);
       decodeService.open("pdf文件路径 ");

4.    documentView.showDocument();


然后在滚动DocumentView的过程中:


     调用documentView. updatePageVisibility();

documentView.updatePageVisibility(){
    for(Page page:pages.values()){

         page.updateVisibility();
    }

}

page.updateVisibility 就调用:
    其成员属性PageNodeTree node 的 updateVisibility()
    {
         ….
         decodePageTreeNode();   //这个方法就是真正触发解析当前页pdf。
         …
     }

  PageTreeNode.decodePageTreeNode(){
        …
        
        documentView.decodeServivce.decodePage(….);  //调用DecodeService的方法



  }

 DocumentServiceBase.decodePage(….){
      …
     用线程池技术启动一条线程,该线程里执行 performDecode(DecodeTask) 方法

}


DocumentServiceBase.performDecode(DecodeTask task){

      1.调用 CodecPage对象 的 renderBitmap 方法,真正生成Bitmap.
      
      2.调用task的回调decodeCallback方法的decodeComplete(Bitmap bitmap) 方法
     
      3.这个回调是在documentView.decodeServivce.decodePage(… decodeCallback()…)传 
          过来的.
      
}
  
整个流程结束.



  

你可能感兴趣的:(vuandroid pef 阅读器 pdf文件->bitmap 整体流程分析)