得到了很多应用程序的图标使内存不足应用程序、图标、得到了、内存不足

2023-09-04 10:31:50 作者:第七个夏天没有名字。

我创建了一个应用程序来加载所有安装的应用程序。现在它的正常工作。 但也有一些手机/有很多应用平板电脑,我的应用程序崩溃,因为内存不足。 下面是源$ C ​​$ C得到应用信息

I created an app to load all installed applications. It's working fine now. But with some phones/tablets that have a lot of applications, my app crashes because of Out Of Memory. Below is the source code to get application info

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

有没有什么办法可以优化上述code,以避免内存不足? 谢谢你。

Is there any way to optimize above code to avoid out of memory? Thank you.

推荐答案

请有看看这个链接:显示位图有效的。

Please have look at this link: Displaying bitmaps efficiently.

此外,在这个开源库项目:通用图像装载机

Also at this open source library project: Universal Image loader.

当你的应用程序需要显示大量的位图,它超出分配的应用程序的内存。此外,当它们被显示在网格,列表或查看传呼机更多的内存,同时创造每个意见消耗。因此你需要缓存在存储器或盘片这些图像和显示它们有效地利用在这些链接中描述的技术。

when your application needs to display lots of bitmaps, it exceeds allocated memory of application. Also, when they are displayed in grid,list or view pager more memory is consumed while creating each views. hence you need to cache in those images in memory or disc and display them efficiently using the techniques described in those links.

添加

看看这个: 获取安装的应用程序使用的名称,包装名称,版本和图标

有关 UIL :

String imageUri = "https://m.xsw88.com/allimgs/daicuo/20230904/8374.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)