您的位置:首页 > 移动开发 > Android开发

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

2012-04-23 11:08 501 查看
在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()…)传
过来的.

}

整个流程结束.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐