我开发了一个在Android上使用大量图像的应用程序.
该应用程序运行一次,填满屏幕上的信息(Layouts,Listviews,Textviews,ImageViews,等)和用户读取的信息.
没有动画,没有特效或任何可以填充内存的东西.有时候抽屉可以改变.有些是android资源,有些是保存在SDCARD文件夹中的文件.
然后用户退出(该onDestroy方法被执行并且app由VM保持在内存中)然后在某个时刻用户再次进入.
每次用户进入应用程序时,我都可以看到内存越来越多,直到用户获得java.lang.OutOfMemoryError.
那么处理许多图像的最佳/正确方法是什么?
我应该把它们放在静态方法中,这样它们就不会一直装载吗?我是否必须以特殊方式清洁布局或布局中使用的图像?
我已经看到了这个问题:android如何下载1mb图像文件并设置为ImageView
它没有解决我的问题,因为它只显示了你已经拥有它后如何显示位图.
我正在尝试从URL下载图像,以便在Android设备上显示ImageView.我不知道该怎么做.
我在互联网上看了一下,这是我到目前为止的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Set local image
ImageView image = (ImageView) findViewById(R.id.test_image);
image.setImageResource(R.drawable.test2);
//Prepare to download image
URL url;
InputStream in;
//BufferedInputStream buf;
try {
url = new URL("http://i.imgur.com/CQzlM.jpg");
in = url.openStream();
out = new BufferedOutputStream(new FileOutputStream("testImage.jpg"));
int i;
while ((i = in.read()) != -1) {
out.write(i);
}
out.close();
in.close();
buf = new BufferedInputStream(in);
Bitmap bMap = BitmapFactory.decodeStream(buf);
image.setImageBitmap(bMap);
if (in != null) {
in.close();
}
if (buf != null) …Run Code Online (Sandbox Code Playgroud)