首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除android PDFView中的PDFView?

如何清除android PDFView中的PDFView?
EN

Stack Overflow用户
提问于 2014-12-09 06:22:24
回答 1查看 659关注 0票数 0

朋友们,我已经成功地在我的应用程序中创建了一个pdfview。但是有时,当我用更多的40页加载pdf文件时,我会面临崩溃,如果你们中的任何人都能告诉我为什么我会收到这条消息,我要做什么来避免得到这个error.Below是我的逻辑错误信息,这将是有帮助的,我得到了。

Logcat错误:

代码语言:javascript
复制
Out of memory on a 1322872-byte allocation.
FATAL EXCEPTION: AsyncTask #2       
java.lang.RuntimeException: An error occured while executing doInBackground()  
    at android.os.AsyncTask$3.done(AsyncTask.java:300)    
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)    
    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)    
    at java.util.concurrent.FutureTask.run(FutureTask.java:242)    
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)    
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)    
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)    
    at java.lang.Thread.run(Thread.java:841)    
Caused by: java.lang.OutOfMemoryError    
    at android.graphics.Bitmap.nativeCreate(Native Method)    
    at android.graphics.Bitmap.createBitmap(Bitmap.java:836)    
    at android.graphics.Bitmap.createBitmap(Bitmap.java:813)    
    at android.graphics.Bitmap.createBitmap(Bitmap.java:780)    
    at com.sun.pdfview.PDFPage.getImage(PDFPage.java:219)
    at android.os.AsyncTask$2.call(AsyncTask.java:288)    
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)

下面是我的代码:

代码语言:javascript
复制
        RandomAccessFile f = new RandomAccessFile(file, "r");
        data1 = new byte[(int)f.length()];
        f.readFully(data1);
        RandomAccessFile f = new RandomAccessFile(file, "r");
        byte[] data1 = new byte[(int)f.length()];
        f.readFully(data1)
        ByteBuffer bb = ByteBuffer.NEW(data1);
        PDFFile pdf = new PDFFile(bb);
        PDFPage PDFpage = pdf.getPage(1, true);
        final float scale = ViewSize / PDFpage.getWidth() * 0.95f; 
        float pdfWid = PDFpage.getWidth() * scale;
        float pdfH = PDFpage.getHeight() * scale;
        Bitmap page;
        if(page != null){
                 page.recycle();
                 page = null;
        }
        page = PDFpage.getImage((int)pdfWid, (int)pdfH, null, true, true);
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        page.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        stream.reset();
        String base64 = Base64.encodeToString(byteArray, Base64.NO_WRAP);
        String html = "<!DOCTYPE html><html><body bgcolor=\"#b4b4b4\"><img src=\"data:image/png;base64,"+base64+"\" hspace=10 vspace=10><br>";
        int size = pdf.getNumPages();
                        try{
                        for(int i = 2; i <= size; i++)
                        {
                            PDFpage = pdf.getPage(i, true);
                            page = PDFpage.getImage((int)pdfWid, (int)pdfH, null, true, true);
                            page.compress(Bitmap.CompressFormat.PNG, 100, stream);
                            byteArray = stream.toByteArray();
                            stream.reset();
                            page.recycle();
                            base64 = Base64.encodeToString(byteArray, Base64.NO_WRAP);
                            html += "<img src=\"data:image/png;base64,"+base64+"\" hspace=10 vspace=10><br>";
                        }
                        }catch (Exception e){
                            Log.d("error", e.toString());
                        }
        stream.close();
        html += "</body></html>";
        wv.loadDataWithBaseURL("", html, "text/html","UTF-8", "");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 11:14:53

嗯,我发现了我在代码中面临的问题,是堆大小导致了OutofMemory异常。因此,我只是通过在Manifest中声明android:largeHeap="true“来增加堆大小,从而解决了这个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27372644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档