位置: 编程技术 - 正文

android防止内存溢出浅析(一)(怎样关闭android系统的内存不足的系统通知)

编辑:rootadmin
做android游戏开发有一段时间了,对于开发中遇到额OutOfMemory 异常真的是很头疼,今天就在此总结下。游戏开发中遇到的内存溢出基本上都是出现在加载Bitmap的时候 ,原因是Bitmap实在是太占内存了,尤其是对于高分辨率的的图片一定要小心使用了。下面就罗列出三点解决使用Bitmap时出现的内存溢出问题的方案:一.及时的销毁:虽然,系统能够确认Bitmap分配的内存最终会被销毁,但是由于它占用的内存过多,所以很可能会超过java堆的限制。因此,在用完Bitmap时,要及时的recycle掉。recycle并不能确定立即就会将Bitmap释放掉,但是会给虚拟机一个暗示:“该图片可以释放了”。二. 设置一定的采样率:有时候,我们要显示的区域很小,没有必要将整个图片都加载出来,而只需要记载一个缩小过的图片,这时候可以设置一定的采样率,那么就可以大大减小占用的内存。如下面的代码:private ImageView preview; BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri), null, options); preview.setImageBitmap(bitmap);三、巧妙的运用软引用(SoftRefrence)有些时候,我们使用Bitmap后没有保留对它的引用,因此就无法调用Recycle函数。这时候巧妙的运用软引用,可以使Bitmap在内存快不足时得到有效的释放。如下例:private class MyAdapter extends BaseAdapter { private ArrayList mBitmapRefs = new ArrayList(); private ArrayList mValues; private Context mContext; private LayoutInflater mInflater; MyAdapter(Context context, ArrayList values) { mContext = context; mValues = values; mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } public int getCount() { return mValues.size(); } public Object getItem(int i) { return mValues.get(i); } public long getItemId(int i) { return i; } public View getView(int i, View view, ViewGroup viewGroup) { View newView = null; if(view != null) { newView = view; } else { newView =(View)mInflater.inflate(R.layout.image_view, false); } Bitmap bitmap = BitmapFactory.decodeFile(mValues.get(i).fileName); mBitmapRefs.add(new SoftReference(bitmap)); //此处加入ArrayList ((ImageView)newView).setImageBitmap(bitmap); return newView; } }

推荐整理分享android防止内存溢出浅析(一)(怎样关闭android系统的内存不足的系统通知),希望有所帮助,仅作参考,欢迎阅读内容。

android防止内存溢出浅析(一)(怎样关闭android系统的内存不足的系统通知)

文章相关热门搜索词:防止内存dump,安卓内存防封教程,安卓内存防封教程,怎样防止手机内存过快损失,怎样关闭android系统的内存不足的系统通知,安卓内存限制,怎样关闭android系统的内存不足的系统通知,安卓避免内存泄露,内容如对您有帮助,希望把文章链接给更多的朋友!

使用irrlicht开发3D移动游戏 本文工作在Ubuntu下用命令行和Vim完成。我的笔记本很旧了,用的是bit系统。使用了NativeActivity,完全用c代码开发。使用了c的特性,主要是智能指针,

CSDN精选Android开发博客 原文地址:

不错的金庸人物考考你android游戏源码 这是刚刚在源码天堂上看到的一款不错的金庸人物考考你android游戏源码,分享给大家学习一下吧。1、有关金庸原著小说的问答题。2、题目多为金庸qq群

标签: 怎样关闭android系统的内存不足的系统通知

本文链接地址:https://www.jiuchutong.com/biancheng/371167.html 转载请保留说明!

上一篇:android游戏开发备忘录(Android游戏开发入门)

下一篇:不错的金庸人物考考你android游戏源码(金庸笔下十大最受欢迎人物)

  • 什么是所得税税负
  • 固定资产清理过程涉及的报表
  • 计提企业所得税费用会计分录
  • 信用代码证过期银行能转账吗
  • 特许权使用费是什么意思
  • 房地产公司资本公积
  • 个税系统如何升级到最新版本
  • 派发股票股利如何入账处理合适?
  • 投资可赎回基金怎么入账?
  • 单位体检如何入账
  • 车船使用税应该交哪里的税
  • 暂扣员工工资怎么做账
  • 以银行存款退还投资者股金
  • 软件技术服务费算无形资产吗
  • 非居民企业从居民企业取得分红
  • 营业部门人员工资用什么会计科目
  • 车船税已代扣代缴怎么办
  • 商誉摊销法的优缺点
  • 进项税额转出多转了怎么办
  • 托收承付是什么意思?
  • 营改增的纳税人
  • 售后需要品控吗
  • 发票盖错章了怎么办呢
  • 企业分红需要缴纳什么税
  • 企业接受捐赠的固定资产账务处理
  • 材料没有入库
  • wind10记事本在哪
  • 贷方发生额是什么意思是利息吗
  • PHP:pg_free_result()的用法_PostgreSQL函数
  • fssm32.exe是什么进程 有什么作用 fssm32进程查询
  • vb enabled
  • php中session什么意思
  • 外购产品会计分录
  • 现在用yii框架的人还多么
  • 新会计准则开办费如何做账务处理
  • 微信小程序商城创建
  • 层层剖析的近义词
  • 面试宝典下载
  • 企业注销亏损怎么处理
  • 增值税普通发票和专用发票有什么区别
  • 视同销售账务处理如何做?
  • Python可变数据类型和不可变数据类型
  • 在建工程转入固定资产怎么做
  • 为什么费用报销先由主管部门审批在由财务审核
  • 账务处理相关内容
  • 当月入账的进项税必须当月认证吗
  • 成本票和进项票举例说明
  • 冲抵货款是什么意思
  • 车船税征收范围有
  • 只知道主营业务怎么办
  • 流动比率计算公式是年初还是年末
  • 坏账收回来了怎么处理
  • 一般来说,采取质押贷款方式
  • 股权转让印花税减半征收政策
  • 生产成本要如何核算
  • 公司与公司之间的借款合法吗
  • 明细账填制要求
  • sql server储存过程的创建与使用
  • 服务器控制电脑
  • freebsd使用手册
  • linux安装有哪几种方式
  • win10手机版微信uwp下载
  • macbook air xcode开发
  • win10预览版与正式版
  • win1020h2版好不好
  • win8系统如何恢复出厂设置
  • 微信 cookies
  • 环境篇作文
  • js的isnan
  • js数据的基本类型有哪些
  • 快速备份mysql数据库
  • js实现生成随机的圆
  • python djang
  • :javascript
  • 个人所得税子女教育到多大结束
  • 乡镇调研报告最佳范文
  • 电子税务网没开通怎么办
  • 北京税务报到期限
  • 青年税务培训内容有哪些
  • 开票盘是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设