我正在开发一个可用于记笔记的应用程序,只是一个绘制应用程序,它保留了一堆Bitmap对象。我完成了创建那些页面(位图)和绘图部分,但我在内存管理方面遇到了麻烦,我动态创建了Bitmap对象作为全屏(对于ex; 1280x720)分辨率然后处理它。
Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
当用户开始创建新页面时,通常内存会不断增长。有一点我得到“Out of memory”错误然后我的应用程序崩溃。
在我的应用程序中,用户可以在滚动页面之间导航,一次最多可以看到两页(部分页面)。我想知道是否有任何现有的API来保存那些当时没有显示的Bitmap对象,并从内存中卸载并在需要显示时加载那些Bitmap对象。如果没有现有的API,你可以给我一些想法,我如何编写自己的内存管理器,我必须如何保存这些位图以及在哪里?
例如;用户开始创建新页面1-2-3-4现在我只需要在屏幕上显示page4我不需要保持page1-2(第3页可能在内存中以便平滑过渡?)在内存中我需要保存它到磁盘(或编码为PNG?或任何更好的解决方案?)当用户开始向上滚动,这意味着我需要同时显示page3-page4(也许我还需要在此时加载page2到内存以便平滑滚动),所以我的应用就像那样。
答案 0 :(得分:0)
您应该使用多线程方法并将它们与异步任务相关联。看看https://developer.android.com/training/multiple-threads/run-code.html