我创建了一个应用程序来加载所有已安装的应用程序现在工作正常。 但是有些手机/平板电脑有很多应用程序,我的应用程序因内存不足而崩溃。 以下是获取应用程序信息的源代码
String appName = p.applicationInfo.loadLabel(packageManager).toString();
String packageName = p.packageName;
String appFile = a.sourceDir;
long lastUpdated = new File(appFile).lastModified();
Drawable icon = a.loadIcon(packageManager);
AppSize appSize = calculateSize(p.applicationInfo.sourceDir);
App application = new App(appName, packageName, lastUpdated, appSize.getSize(), appSize.getLongSize(), icon, false);
有没有办法优化上面的代码以避免内存不足? 谢谢。
答案 0 :(得分:3)
请查看此链接:Displaying bitmaps efficiently。
此外,在这个开源库项目:Universal Image loader。
当您的应用程序需要显示大量位图时,它超出了应用程序的已分配内存。此外,当它们显示在网格,列表或视图寻呼机中时,在创建每个视图时会消耗更多内存。因此,您需要在内存或光盘中缓存这些图像,并使用这些链接中描述的技术有效地显示它们。
<强>加成强>
看看这个: Get installed Applications with Name, Package Name, Version and Icon
UIL的可接受URI示例:
String imageUri = "http://site.com/image.png"; // from Web
String imageUri = "file:///mnt/sdcard/image.png"; // from SD card
String imageUri = "content://media/external/audio/albumart/13"; // from content provider
String imageUri = "assets://image.png"; // from assets
String imageUri = "drawable://" + R.drawable.image; // from drawables (only images, non-9patch)