位置: 编程技术 - 正文

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游戏源码(金庸笔下十大最受欢迎人物)

  • 个税返还奖励财务人员流程
  • 资金账簿印花税减半征收后可以叠加享受优惠吗
  • 进项税和销项税怎么理解
  • 进项票可以抵扣销项票吗
  • 没有购置税发票有影响吗
  • 冲企业所得税的分录
  • 售后回租会计处理研究国外相关研究成果
  • 单位发放奖金如何做账
  • 免税苗木发票如何抵扣计算
  • 购买办公楼支付相关手续费
  • 接受投资者的无形资产
  • 政府会计基本准则的附则有
  • 个人与个人之间转账有限额吗
  • 个人建筑安装如何交税
  • 4.86的税率怎么算
  • 应交税费明细科目有简易计税吗
  • 财务负责人和办税人员哪个责任大
  • 税务代理有哪些岗位
  • 质押贷款属于什么贷款
  • 房地产企业开发资质等级
  • 纳税申报有哪些规定
  • 售后回租业务的会计分录
  • 我的初级备考经验--相信自己
  • 有质量问题的产品案例
  • 支付测量费的补贴费用怎么记账
  • 本月合计怎么做
  • 代扣代缴增值税怎么申报
  • 减资弥补亏损是什么行为
  • 产品检测步骤
  • mac双系统删除window后怎么重新恢复
  • 王者荣耀中墨子的最强出装
  • php中数组的常用函数及用法
  • 混合销售账务处理办法
  • PHP:imagecolorresolve()的用法_GD库图像处理函数
  • php储存数据的方法
  • 大熊雨林中一只小熊
  • 资产负债表的编制方法
  • mysql desc(DESCRIBE)命令实例讲解
  • bulkload命令
  • 印花税的营业账簿是什么意思
  • 金税盘服务费可以跨年抵扣
  • http上传错误
  • 法定盈余公积的作用
  • sql server 2016 sp3
  • sqlserver存储过程写法
  • sql存储过程详解图
  • 一般纳税人怎么开3个点普票
  • 小规模纳税人免税政策2023年
  • 所得税费用是什么意思
  • 税前弥补以前年度亏损
  • 招待费具体范围包括哪些
  • 银行季度结息怎么记账
  • 现金日记账是会计人员根据审核后的
  • 只有进项要交税吗
  • 对外投资未实缴怎么办
  • 对公账户给私人账户转账,几天到账
  • 可以先注销银行信用卡吗
  • sqlserver 触发器 redis
  • sqlserver数据库恢复
  • centos防火墙操作
  • win8系统怎么设置
  • 微软推送win11
  • pcalc是什么软件
  • win8系统文件
  • win8系统恢复
  • cocos2dx如何通过Image获取指定点颜色值
  • node分页接口
  • android 程序开发
  • 批处理命令教程 pdf
  • node.js入门
  • jsp生成uuid
  • pygame实例
  • 置顶txt
  • js右键菜单
  • 鼠标悬停时的动画效果
  • jq cookie
  • 2012 05-26 Unity3D研究院之两种方式播放游戏视频(二十五) 雨松MOMO
  • 出口退税外汇汇率如何确定
  • 财政局,人社局和法院哪个好
  • 云南新农合怎么报销的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设