我正在开发一款应用。我在drawable-hdpi
文件夹中有1200多个图标。每一秒我都会拿起一个我需要展示的图标。所有图标均为48*48
像素,格式为.png
。他们总共占用774 KB
个空间。我正在运行Service
,从那里我每秒都会选择一个图标。在那onCreate()
Service
drawable
中我以这种方式存储speed = new ArrayList<Integer>();
speed.add(R.drawable.image000);
speed.add(R.drawable.image001);
speed.add(R.drawable.image002);
//...and so on
ID:
nm.notify(1, builder.setContentTitle("up: " + s + " down: " + s2)
.setContentText(g)
.setSmallIcon(speed.get(xValue + yValue))
.setContentIntent(contentIntent)
.setPriority(128)
.build());
我的应用程序非常简单。它添加了一些数字,并从相应的arraylist的房间中取出图标并将其显示在通知状态栏中。像:
(Arround 105-120 MB)
现在问题是,我的应用程序占用了太多内存Bitmap
。我没有使用任何Service
。即使我在public void freeMemory() {
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();
}
中每秒都调用此方法:
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
并添加了此代码:
Imports System.IO
在每项活动中。为什么这么多记忆呢?我是以错误的方式存储这些图标吗?我现在该怎么办?
答案 0 :(得分:0)
对于有效的尺寸,您有2个选项可以在线上传图像,然后从那里上传,因为现在每个人都在智能手机上使用互联网,因此从网络上拍摄图像并不是一个坏主意,以节省大量的保存(以MB为单位) )。
String imageUri = "http://example.com/myimage.png"; // from Web
OR
第二个选项是在安装应用程序后上传SD卡上的文件,然后从SD卡中取出文件。两种选择都很有效。选择你所在的大陆。
String imageUri = "file:///mnt/sdcard/myimage.png"; // from SD card