多数时候,发生OOM 都是在做一些跟图片相关的操作,以下提出一些建议尽量可以减少这种情况的发生:
1.decode bitmap 的时候,尽量配置下Options,例如:inSameSize
2.Bitmap使用完以后,调用 bitmap.recycle()来释放内存
3.如果应用是基于图片的应用,尽量采用LazyLoad和DymanicRecycle
4.decode bitmap 的时候,将decode代码 try catch 出来,catch oom error,避免程序crash,可以在catch里面做一些释放内存操作
- 浏览: 121415 次
- 性别:
- 来自: 广州
文章分类
最新评论
发表评论
文章已被作者锁定,不允许评论。
-
stopSelf()与stopSelf(startId)的区别
2016-04-14 14:44 1113startId:表示启动服务的次数 stopSelf(sta ... -
安装/卸载/替换成功广播接收
2016-01-08 11:59 813<receiver android:name=" ... -
ContentProivder
2015-12-09 09:26 490ContentProvider 我们实现了其中的几个方法 ... -
Android获取网络时间
2015-11-19 11:27 11891、实时获取: LocationManager locatio ... -
android animation知识
2015-11-14 11:47 580<?xml version="1.0" ... -
代码中设置android:drawableTop等
2015-11-14 10:42 1025btnAttachment.setCompoundDrawab ... -
自定义View
2015-11-04 15:09 407一般来说,自定义View都会去重写onMeasure()方法, ... -
SimpleOnGestureListener
2015-11-04 12:03 559onScroll()缓慢滑动,手指滑动屏幕的过程中执行; on ... -
设置dialog在底部并宽度全屏显示
2015-11-02 11:53 2295pickerDialog.setContentView(vie ... -
横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
2015-10-29 10:51 1808在之前的版本中都是在Manifest文件中设置Activity ... -
Dialog注意点
2015-10-28 17:14 531dialog:setCancelable与setCancele ... -
清除setBackgroundResource的原有值
2015-10-23 16:50 1176setBackgroundResource(0);清除原有的s ... -
接收隐式意图
2015-10-22 11:29 551想接收隐式意图,必须在他们的意图过滤器中配有:android. ... -
严苛模式
2015-10-14 20:25 1380//启用严苛模式,StrictMode可以用于捕捉发生在应用程 ... -
Android使用Animation完成动画保留最后一帧的办法
2015-09-08 10:43 2443在动画效果的xml中,在set标签中加上一条android:f ... -
控件getHeight和getWidth等于0的解决办法
2015-09-07 17:27 1443//监听layoutContainer是否初始化完成 l ... -
Service和Thread的区别?
2015-08-19 13:25 501servie是系统的组件,它由系统进程托管(servicema ... -
避免内存泄露
2015-08-18 19:21 4991、尽量避免在Activity使用static。 2、能使用A ... -
需要context的时候用activity还是application?
2015-08-17 17:02 771需要context的时候用activity还是applicat ... -
谈谈UI中, Padding和Margin有什么区别?
2015-08-10 17:18 1103Padding 文字对边框, margin是控件与控件之间的距 ...
相关推荐
### Android OOM错误的原因 在Android开发过程中,经常会遇到一种常见的异常——OutOfMemoryError(简称OOM),这主要是因为Android为了确保设备性能与响应速度,在内存管理方面设定了严格的限制。对于每个应用程序...
在Android开发中,"OOM"(Out of Memory)是一个常见的问题,它指的是应用程序在运行过程中耗尽了可用的内存,导致系统无法分配更多的内存资源,从而引发崩溃。为了解决这个问题,开发者需要深入理解Android内存管理...
在Android开发中,Out Of Memory (OOM) 是一个常见的问题,尤其在处理图像资源时更为突出。本示例主要探讨如何解决Android应用中的图片OOM问题,以确保应用的稳定性和性能。 首先,我们需要理解Android系统对内存...
- **异步加载**:尽量避免在主线程中进行图片加载,以免阻塞UI。可以使用 AsyncTask 或者 Handler/Looper 进行异步处理。 - **避免无用的引用**:确保没有 Activity 或其他组件持有对 Bitmap 的引用,以防内存泄漏...
在Android开发中,由于系统对每个应用程序分配的内存有限,加载大尺寸的图片可能会导致“Out Of Memory”(OOM)异常,从而影响应用的稳定性和性能。为了解决这个问题,我们需要掌握一些有效的策略来优化图片加载,...
此外,尽量使用矢量图(如SVG),因为它们可以在不同分辨率下保持清晰,且文件大小较小。 2. **使用Nine-Patch**:对于需要拉伸的图片,使用Nine-Patch(.9.png)格式可以只存储需要拉伸的部分,节省内存。 3. **...
5. **避免大数据对象**:尽量避免一次性加载大量数据,分批次加载或使用列表滚动时动态加载。 三、源码学习 理解Android系统如何处理内存和图片加载,有助于我们编写更高效的代码。例如,研究BitmapFactory....
8. **避免大对象**:尽量避免一次性加载大量数据,尤其是大图片,分批加载或懒加载可以缓解内存压力。 9. **资源回收**:在不再使用Bitmap时,及时调用recycle()方法释放资源,但要注意不要在可能被再次使用的...
7. **避免不必要的内存拷贝**:在使用Bitmap时,尽量减少复制操作,如传入Bitmap到其他函数时,尽量传递引用而不是复制。 8. **内存预算和监控**:通过ActivityManager.getMemoryClass()和ActivityManager....
虽然Linux的oom killer能够应对大多数低内存情况,但在Android这种高度定制化的环境中,oom killer存在一些明显的局限性: - **响应速度慢**:oom killer通常在内存极度紧张时才会被触发,此时可能已经对用户体验...
3. 如果可能,尽量使用九宫格(Nine-Patch)图像来减少内存占用,因为它们允许图像拉伸而不失真。 4. 在不使用动画时,记得释放资源,避免内存泄漏。 总之,Android的Frame动画是创建简单动画的有效手段,适用于像...
《Android 360°全方面性能调优》是一本深度探讨Android系统性能优化的宝典,涵盖了设计思想、代码优化、程序性能、内存管理、功耗控制、网络通信、应用打包、屏幕适配、启动速度、流畅度、ANR问题、崩溃监控、OOM...
例如,尽量使用低分辨率的图片,避免在内存中持有大量大对象,及时释放不再使用的资源,以及适时地清理缓存。 7. 网络请求和异步处理:为了不阻塞UI线程,图片的下载和加载应该在后台线程进行。可以使用AsyncTask、...
Android使用`Lowmemorykiller`守护进程来管理内存,它基于`OOM_ADJ`(Out-Of-Memory Adjuster)评分进行进程的优先级判断。评分越高,进程越容易被杀。通常,评分在4及以上的进程较为脆弱,而较低评分的进程则更不易被...
### 有关Android内存泄漏的问题及解决方案 ...综上所述,理解Android系统的内存管理机制以及如何有效地管理应用内存对于避免OOM错误至关重要。通过对内存使用习惯的改进和优化,可以显著提高应用的性能和用户体验。
- 使用`BitmapFactory.Options`预加载图片,避免OOM异常。 3. **内存泄漏防范**: - 关注Activity、Fragment的生命周期,避免非静态内部类持有外部对象的引用。 - 及时释放不再使用的资源,如Bitmap对象等。 - ...
在处理大尺寸GIF时,可能会遇到内存溢出(OOM)的问题。这是由于Android系统对每个应用分配的内存有限,特别是加载大型图片时。为避免这个问题,我们可以采取以下策略: - **缩放GIF**: 在加载之前先进行缩放,减少...
- **避免增加系统调用**:尽量利用现有的系统调用接口,以减少复杂度。 #### 二、Android与硬件的关系 操作系统的一个关键职责是为硬件提供统一的接口,以便用户空间的应用程序能够方便地访问这些硬件资源。在...
- 尽量避免使用非静态内部类,除非它们需要访问外部类的实例。 - 避免不必要的对象创建,例如使用StringBuffer代替String进行字符串拼接。 7. **资源回收**: - Activity和Fragment的生命周期管理,确保在适当的...