`
wang_peng1
  • 浏览: 3960189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Bitmaps图片泄露问题

阅读更多
class ImageManager {
    private HashMap<Integer, Bitmap> mBitmaps;
    private HashMap<Integer, Drawable> mDrawables;

    private boolean mActive = true;

    public ImageManager() {
        mBitmaps = new HashMap<Integer, Bitmap>();
        mDrawables = new HashMap<Integer, Drawable>();
    }

    // We need to share and cache resources between objects to save on memory.
    public Bitmap getBitmap(int resource) {
        if (mActive) {
            if (!mBitmaps.containsKey(resource)) {
                mBitmaps.put(resource,
                    BitmapFactory.decodeResource(MainActivity.getContext().getResources(), resource));
            }
            return mBitmaps.get(resource);
        }
        return null;
    }

    public Drawable getDrawable(int resource) {
        if (mActive) {
            if (!mDrawables.containsKey(resource)) {
                mDrawables.put(resource, mGame.getView().getResources().getDrawable(resource));
            }
            return mDrawables.get(resource);
        }
        return null;
    }

    public void recycleBitmaps() {
        Iterator itr = mBitmaps.entrySet().iterator();
        while (itr.hasNext()) {
            Map.Entry e = (Map.Entry)itr.next();
            ((Bitmap) e.getValue()).recycle();
        }
        mBitmaps.clear();
    }

    public ImageManager setActive(boolean b) {
        mActive = b;
        return this;
    }

    public boolean isActive() {
        return mActive;
    }
}

 http://blog.pseudoblue.com/2010/08/15/android-bitmaps-and-memory-leaks/

分享到:
评论

相关推荐

    Displaying Bitmaps Efficiently

    - **Load Bitmaps into a ViewPager Implementation**:在ViewPager中加载位图,需要实现高效的图片滑动,比如使用`PagerAdapter`的`getBitmapForPosition(int position)`方法来按需加载和复用位图。 - **Load ...

    DisplayingBitmaps

    7. **内存泄漏检测**:位图操作中常见的问题是内存泄漏,应使用工具如MAT (Memory Analyzer Tool) 或LeakCanary来检测和修复这些问题。 8. **资源回收**:在不再需要位图时,必须正确释放资源,如调用`recycle()`...

    google官方加载图片处理demo

    通过深入研究"DisplayingBitmaps",开发者可以学习到如何有效地在Android应用中加载和管理图片,提高应用性能,并提供流畅的用户体验。这个项目不仅提供了代码实现,还包含了详细的注释和解释,是Android开发者的...

    android 加载本地图片

    - `public void loadBitmaps(int firstVisibleItem, int visibleItemCount)`: 根据GridView的可见状态加载图片。 - 遍历可见的图片索引,逐个加载到LRUCache中。 #### 三、LRUCache实现原理 1. **初始化LRUCache...

    Debug_MFC图片加载_

    然后,在资源视图中,创建位图资源(Bitmaps)来存放要切换的图片。将每张图片导入到相应的位图资源中,确保它们的大小适应显示区域。 3. **处理按钮消息** 在对应的头文件(如`Dialog.h`或`View.h`)中,为按钮...

    MFC图片静态加载

    打开"ResourceView"窗口,右键单击"Bitmaps",选择"Insert Bitmap"导入你要显示的图片。假设你已经有一个名为"ͼƬ"的位图文件,将其导入并分配一个ID,例如IDB_IMAGE。 3. **编辑对话框类** 如果你的界面是基于...

    Android内存泄漏的八种可能.docx

    虽然Java作为一种垃圾回收语言,为开发者提供了许多便利,但在实际开发过程中仍然需要注意内存泄漏的问题。内存泄漏可能导致应用运行缓慢、卡顿甚至崩溃等问题。本文将详细介绍Android开发中常见的八种内存泄漏情况...

    Google 官方 Android DisplayBimaps的优化事例

    Google官方对Android显示Bitmaps进行了深入优化,旨在提高用户体验,减少应用崩溃,以及节省设备资源。这篇博客"Google官方Android DisplayBimaps的优化事例"详细介绍了这一过程。 Bitmap在Android系统中是用于表示...

    BitmapFun.zip

    由于Android设备的内存有限,高效管理Bitmap非常重要,以避免内存泄漏和性能问题。BitmapFun项目很可能包含了一些最佳实践,例如使用BitmapFactory加载图片,选择合适的解码选项,以及使用内存和磁盘缓存来优化性能...

    android GIF生成工具

    实际操作中,开发者还需要考虑性能优化,例如批量加载图片、在子线程处理GIF生成,以及适当地释放资源以防止内存泄漏。此外,为了提供更好的用户体验,可以添加进度条或通知,让用户知道生成过程的状态。 总之,...

    Android应用源码之(动态位图).zip

    在Android应用开发中,动态位图(Dynamic Bitmaps)是一个重要的概念,特别是在处理图像资源、动画或者游戏场景时。这份"Android应用源码之(动态位图).zip"的压缩包很可能包含了一些示例代码,用于展示如何在Android...

    Android 仿美图秀秀拼图功能使用代码的时候-IT计算机-毕业设计.zip

    这些库用于加载、缩放和显示图片,优化内存管理,以避免内存泄漏。 3. **自定义View**:为了创建独特的拼图布局,开发者可能会自定义一个`View`或`ViewGroup`,如`GridView`或`RecyclerView`的子类。这需要对...

    缓冲水小游戏

    6. **资源管理**:学习如何加载、释放和管理游戏中的资源,避免内存泄漏和性能问题。 7. **游戏逻辑**:设计并实现游戏的规则和交互,如玩家操作、物体碰撞检测、得分计算等。 通过分析和实践这个小游戏,初学者...

    fragmentTabgost的使用和优化

    9. **注意内存泄漏**:检查并确保在Tab切换或Fragment被销毁时,没有持有任何不必要的引用,防止内存泄漏。 通过以上方法,你可以有效地使用FragmentTabHost并提高应用的性能。记得持续优化和测试,以确保最佳的...

    bitmap内存管理

    为了避免这种情况,可以监控内存使用情况,及时释放不再使用的资源,并考虑使用更小的图片格式或降低图片质量。 Google官方提供的DisplayingBitmaps示例代码,详细展示了如何在实际项目中应用上述策略,包括解码...

    fresco-sample-showcase-copy:壁画展示样本的副本,可以在没有壁画源代码的情况下进行编译和运行-Show source code

    3. **Bitmaps and Decoding**:Fresco使用了延迟解码技术,只在需要显示图片时才解码,减少内存占用。它还支持选择合适的颜色空间和采样率,以优化解码速度和质量。 4. **动画支持**:Fresco可以处理复杂的图片动画...

    java手机游戏源代码

    3. 图形和动画:Java游戏源代码中会涉及到2D图形的绘制,包括精灵(Sprites)和位图(Bitmaps)。了解如何使用Java的Canvas或游戏框架中的图形API创建动态图像和动画,是学习游戏开发的重要环节。 4. 用户输入处理...

    dabao.rar_VB 打包_资源文件

    例如,使用`LoadPicture`函数加载图片资源,`LoadResString`读取字符串资源,或者直接通过`LoadResource`和`LockResource`函数来访问更复杂的资源。此外,`Project -&gt; Resources`菜单项允许我们直接在VB环境中添加和...

    安卓Android源码——幸运大转盘源码.zip

    - **绘制优化**:减少不必要的重绘,避免内存泄漏,合理使用Bitmaps以节省内存。 - **动画性能**:通过硬件加速和适时的暂停/恢复动画来提升用户体验。 5. **测试与调试**: - **单元测试**:对关键逻辑如转盘...

Global site tag (gtag.js) - Google Analytics