关于Android内存管理问题

请教各位大神,我用的一个activity打开一个pdf,完了每次退出的时候我有清空而且提醒内存回收,但是每次内存都不回收,每次打开过一个activity就会消耗掉一些内存,打开几个之后就会内存溢出了,大神们给个建议啊?这个要怎么处理呢?
FileInputStream in;
if(uri.getPath() != null) {
in = new FileInputStream(uri.getPath());
} else {
in = new FileInputStream(mPath);
}

                    ByteArrayOutputStream f = new ByteArrayOutputStream();

                    byte[] buffer1 = new byte[1024];
                    int len1 = 0;
                    long total = 0;

                    while ((len1 = in.read(buffer1)) > 0) {

                        f.write(buffer1, 0, len1);//在这里报内存溢出
                    }

4个回答

你内存溢出的时候是打开了多个activity,这些都还没被destroy吗?如果是这样,是很正常的。
如果是打开一个之后,然后back把它销毁,再打开一个。这种情况下出现OOM,那么,你就要查下,是不是activity有什么耗时的后台线程起着,然后你back时还没结束,那么资源就会占用,直到这个线程结束。
换句话说,你要看下那个activity有没有被不会马上结束的对象引用着。

在activity销毁的时候,把inputstream和outputstream关闭掉,试试

activity不用的时候可以用finish关掉呀

in.close f.close

立即提问