请教各位大神,我用的一个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);//在这里报内存溢出
}
你内存溢出的时候是打开了多个activity,这些都还没被destroy吗?如果是这样,是很正常的。
如果是打开一个之后,然后back把它销毁,再打开一个。这种情况下出现OOM,那么,你就要查下,是不是activity有什么耗时的后台线程起着,然后你back时还没结束,那么资源就会占用,直到这个线程结束。
换句话说,你要看下那个activity有没有被不会马上结束的对象引用着。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。