java Android Studio Firebase图像导致OOM
目前,我正在开发一个简单的社交媒体应用程序,我有一些问题。如果不是内存不足,我的应用程序可以完美运行。我已经通过logcat了解了为什么我会收到这条消息,以及为什么我的应用程序在经过一些测试后没有显示图像
我在我的应用程序上运行了Android Profiler来查看发生了什么,然后我开始切换活动,发帖子并加载以前的一些帖子。我注意到我的内存在稳步增长,在大约500mb时,我的应用程序停止显示图像
我的记忆力并没有下降,每次我加载一张图片,它都会显著增加。我使用片段在加载用户帖子的提要中导航,我还有一个设置按钮,可以将用户带到一个新的设置活动。如果内存达到500mb左右,则不会加载每个片段和设置中的所有图像
我正在使用Firebase存储来获取图像。我使用Firebase来获取用户名、电子邮件等的文本,它似乎可以完美加载
有人知道如何解决这个问题吗?它只需要大约一分钟的活动就可以达到500mb
下面是我在设置活动中加载图像的方式,在我获取post feed的活动中,它使用模块类,所以我不会在这里粘贴所有代码,我已经对其进行了测试。两个活动上的图像总是以相同的方式加载。总之,这是我的设置活动,用于获取配置文件图像
eventListener = UserRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChild("username")){
String Username = dataSnapshot.child("username").getValue().toString();
username.setText(Username);
}
if (dataSnapshot.hasChild("profileimage")){
String image = dataSnapshot.child("profileimage").getValue().toString();
Picasso.get().load(image).placeholder(R.drawable.user_circle2).into(profileImage);
endListener();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void endListener() {
UserRef.removeEventListener(eventListener);
}
谁能告诉我怎么解决这个问题吗。图像压缩?垃圾收集?我需要一些建议,谢谢
# 1 楼答案
处理完图像后,可能需要显式调用
image.dispose()
。这是因为图像不会加载到java内存堆中,因此不会被垃圾收集