位置: 编程技术 - 正文

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

  • 产权转让印花税计税依据
  • 纺织品产量
  • 劳务报酬收入是否含税
  • 个体户查账征收需要交什么税
  • 高档化妆品增值税税率是13%
  • 企业控股情况怎么填写
  • 加计扣除企业所得税季报申报
  • 网络团购的类型
  • 加工费可以开批吗
  • 进料深加工境外付汇
  • 企业丢失账簿稽查局可以处罚吗
  • 快递售后是干嘛的
  • 补发工资计算公式
  • 商贸企业销售商品结转成本是手工算吗
  • 实收资本不到账如何做凭证
  • 固定资产盘盈可计入
  • 2021年个体工商户的税率是多少
  • 开业庆典礼仪费计入什么科目?
  • 工伤赔付是那个出钱呢
  • 过期未抵扣的发票对企业有什么影响
  • 新公司税控盘购买流程
  • 投资预算的编制方法
  • 冲费用挂账怎么做账
  • 所得税汇算清缴退税会计分录怎么做
  • 电脑找不到休眠设置了
  • 社保会计分录怎么写
  • 计提工资时怎么做账
  • 增值税一般纳税人和小规模纳税人的区别
  • 当月认证抵扣的进项税发票一定要入帐做成本吗?
  • 职工教育经费一定要提吗
  • 橡皮树的扦插方法和注意事项
  • 利用均匀水流导致的水位变化来显示时间
  • 遇到的问题及解决方法
  • 贵的u盘和便宜的有什么区别
  • 长期应收款属于流动资产吗
  • 罗卡购物村
  • 输入什么验证
  • 计提的福利费怎么处理
  • php输出隔行变色的表格
  • php自定义函数格式是什么
  • 旅游业发票的税率是多少
  • checksum命令
  • php添加背景怎么实现
  • 国税申报系统操作流程
  • 增值税进项税加计抵扣
  • 装订会计凭证步骤
  • 利息应怎么录入收入
  • 利息收入怎么入账
  • mysql数据库错误日志
  • 已付款但未收到发票怎样记账
  • 收到税务局退回的增值税税款怎么做账
  • 进口增值税已抵进项税额
  • 开票收入摘要怎么写
  • 保险收入如何做账
  • 库存商品对外销售会计分录
  • 半年净资产收益率
  • 管理会计期末存货量怎么算
  • 资本公积金什么时候提取
  • mysql 备份和恢复
  • sql行列转换方式
  • 联想笔记本在bios关闭触摸板
  • bios如何关闭网卡
  • windows 10预览版
  • win10系统可以自己安装驱动吗
  • 如何在windows server 2016如何加域
  • 怎么清空windows8电脑里全部东西
  • 微软系统如何恢复出厂设置
  • windows10专业版界面预览
  • win10系统如何创建新用户
  • eclipse cocos2dx Couldn't load cocos2dcpp from loader
  • jQuery基于ajax操作json数据简单示例
  • angular的排序管道
  • unicode类型 python
  • python爬虫入门教程
  • HorizontalListView
  • 页面跳转后js还会执行吗
  • 财税专家刘杨简历图片介绍
  • 个体工商户如何申报个税
  • 江苏房产税如何计算公式
  • 增值税普通发票可以抵扣吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设