处理绘图/绘画/保存多个位图

Max*_*Max 6 android bitmap android-asynctask android-fragments

目标:

我想从pdf中绘制/写/绘制位图并将它们保存在一起,这样我就可以发送电子邮件了.

细节:

我有多个Pdf文件包含5-20每个页面,现在正在从中提取位图pdfs并将它们加载到片段中ViewPager,我可以在其中滑动它们并写入/绘制或我想要的任何内容.保存/恢复我正在使用的位图的当前状态onSaveInstanceState.这样我就可以在来回滑动的同时检索位图的最后一个阶段.

像这样的东西:

@Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable("Bitmap", bitmap);
    }
Run Code Online (Sandbox Code Playgroud)

问题:

用户按下发送电子邮件按钮,我应该能够保存所有图像,无论他在哪个页面,即他已经编辑了5到10页,现在他在第10页,按下发送按钮我应该能够检索所有编辑过的图像.

问题2:

正如我所说,图像的数量大约为5-20,保存状态的onSaveInstanceState效果很好,但它会不断增加内存中的应用程序内存,并且应用程序在应用程序大小所在的第10个图像处崩溃150Mbs.

但是将图像保存为捆绑包onSaveInstanceState也是必要的,因为当用户向后滑动时,它有助于更​​快地加载图像.

所以我想我们有什么方法可以创建一个自定义捆绑类,我们可以在滚动5页之后将图像写入磁盘并清除内存并在用户向后滚动时将其从磁盘读回内存?这听起来有道理吗?

我尝试过的:

作为位图在单独的碎片装我试图挽救位图到外部存储中OnDestroy,但保存位图到磁盘上是一个不小的任务,它需要一定的时间,虽然现在用的AsyncTask ,但是当用户刷卡有点快片段之间,然后保存位图在OnDestroy做似乎不是一个方便的方式.

这就是为什么我问这个问题所以也许你对这种情况有了更好的了解,并且可以帮助我以更方便的方式实现这个目标.

那么你的目的是如何处理这种情况呢?

注意:

如果您无法理解情况并需要更多信息,请给我留言,我会更新问题.

谢谢

Bel*_*loo 0

让我描述一下我现在如何看待这个问题的解决方案。

应该有一个Service带有某个id的已编辑位图(与原始位图的所有修改相同),将其添加到队列中,然后将该队列的每个项目持久保存到外部存储中。它具有执行该任务(它们可能只是)并创建任务到位图标识符的位置映射的有限实例。因此,当新的到来时,检查地图并替换等待任务(具有相同的原始位图)(如果存在)。ExecutorRunnableServiceHashMapFutureBitmapService

Service您可以从destroyItem的拦截器向此发送任务FragmentStatePagerAdapter

因此,当用户单击“保存”按钮时,您还应该将所有编辑过的位图发送到此Service并等待完成。