获取大量应用程序图标会导致内存不足

时间:2013-06-06 09:47:20

标签: android out-of-memory

我创建了一个应用程序来加载所有已安装的应用程序现在工作正常。 但是有些手机/平板电脑有很多应用程序,我的应用程序因内存不足而崩溃。 以下是获取应用程序信息的源代码

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);

有没有办法优化上面的代码以避免内存不足? 谢谢。

1 个答案:

答案 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)