为什么Android将动态视图存储在RAM中?

时间:2017-03-11 18:31:47

标签: android memory-management ram

问题可能看起来很奇怪,但我遇到了Android应用程序的问题。我使用布局inflater动态创建我的Android应用程序的视图,视图包含图像。大多数图像小于800kb。因此,当我打开应用程序时,它开始使用大量的RAM,当我切换到另一个活动时,它会添加更多包含图像的ram。当我退出活动并返回第一个活动时,它不会清理RAM。由于公司政策,我无法在此处添加我的实际代码,但这是我正在做的事情的片段,

我有两项活动HomeActivityDisplayActivity。在家庭活动中,我有空的scrollview。我正在使db查询提取信息。使用布局inflater,

for (DataModel d : dm) {
JSONObject dataJson = new JSONObject(d.getData());


View headerCard = LayoutInflater.from(HomeActivity.this).inflate(R.layout.head_card, null);

ImageView cardHeadImage = (ImageView) headerCard.findViewById(R.id.head_card_header_image);
TextView cardNote = (TextView) headerCard.findViewById(R.id.head_card_note);

String imageLink = dataJson.getJSONObject("data").getString("article_image");

String note = dataJson.getJSONObject("data").getString("article_title");

imageLoader.displayImage(h.getMediaURL() + imageLink, cardHeadImage);
cardNote.setText(note);


scrollViewChild.addView(headerCard);
}

因此,当我不添加图像时,它使用较少的RAM。我有缓存图像。所以我的问题是,在生成视图并将其置于显示后,是否有可能清除RAM?如果需要,我可以提供更多信息。但基本上这就是我的两项活动的运作方式。

imageLoader分三步进行。 1)检查缓存的图像。 2)如果图像没有缓存而不是下载图像并缓存它。 3)在imageview中显示图像。大部分时间都会跳过第2步,因为图像大部分都来自缓存。

感谢。 :d

0 个答案:

没有答案