請教各位大神,我用的一個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有沒有被不會馬上結束的對象引用著。