如何在Android中重新打开应用程序后使用缓存数组?

时间:2015-01-27 21:27:53

标签: java android arrays garbage-collection char

这是我的第一次Java编码体验,所以我不得不搜索大量信息,但是我仍然有问题。

在我的应用程序中,我必须将4.5 Mb数组读入内存。正如我在Android studio中的Memory Monitor中看到的那样,在按下并退出桌面后不会删除它。它不会被GC删除。我可以在第二次发布时使用相同的阵列吗?指向它的指针(它是MainActivity中的全局)每次都为null,所以我必须得到一个新数组。但是之前没有被删除。如果我没有将指向它的指针设置为null而不在onPause()中调用System.gc(),则应用程序会崩溃并显示OOM。我试过putCharArray和getCharArray,仍然没用。有没有办法使用相同的数组?或者我每次打开应用程序时都必须阅读它?即使在进入“设置”并从通知栏返回或打开/关闭物理键盘之后,也会发生这种情况。 Android 4.0.3 AVD。

更新 对我感到羞耻,我甚至没有想过索引。 无论如何,据我所知,Android在使用“后退”按钮关闭后,在缓存中有一个应用程序。如果我只是创建一个数组,但是在onPause中没有使它为null,则GC不会释放内存(正如我在内存监视器中看到的那样)。但在再次打开应用程序后,指针为空,即使我没有将其置空。有没有办法保存指针和这个结构不在文件中,并检查它是否仍然在缓存后再次打开应用程序,以便不重新加载文件?不仅仅是在杀死进程之后,甚至只是在屏幕上移动它时,例如,打开“设置”。

1 个答案:

答案 0 :(得分:0)

你要么创建一个数据库并将数据插入其中,以便可以在启动时加载它或将其保存在本地sd存储器中的文件中,对于数组我建议这样做并将数组写入json文件:
https://stackoverflow.com/a/14706227/1173391