位置: 编程技术 - 正文

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

  • 承兑汇票私人贴现要多久
  • 金税盘备份文件名
  • 向投资者分配现金股利会影响负债吗
  • 暂估工资成本
  • 中外合资经营企业法
  • 债券投资的风险主要有
  • 员工自己领取社保卡需要带什么资料
  • 小型企业缴纳企业所得税
  • 企业购买劳保用品会计处理
  • 什么是红字信息表编号
  • 申报预缴企业所得税
  • 坏账准备金最新计算公式
  • 税务机关核定的计税价格是否含税
  • 税务变更后之前的进项
  • 一般纳税人差额申报表填写
  • 材料采购的合同价款
  • Win11 Dev Build 22000.65开发预览版推送(附更新修复已知问题汇总)
  • 苹果macmimi
  • vue中的...
  • 哪些抵押物必须登记才有效
  • 华为应用市场被锁了,怎么解除密码
  • 公司购买基金怎样入账
  • 贷款利息 发票
  • php 7z
  • 代金券消费怎么做分录
  • 债权转增资本的条件
  • win10关闭自动更新方法永久
  • 销售返利如何做账
  • 已缴税额比应纳税额多
  • 年终奖发放管理制度
  • apache是什么文件
  • 后端接口返回数据类型规范
  • 审核过程中发现的问题应由被审核部门实施纠正
  • 私人定制ai绘画下载
  • 设置cmd命令
  • 组装设备配件入什么科目
  • 金税盘减免税额
  • 长期挂账的"其他应收款"该怎么处置
  • php中isset函数作用
  • python中的元组
  • 个体户3万免税规定2019
  • 营销策划协议
  • 企业申请进出口权经营范围
  • 工资薪金与劳务报酬的区别有哪些
  • 在途物资属于会计科目吗
  • 公司什么项目
  • 应付利息什么时候确认收入
  • mysql 缓冲区
  • 小规模纳税人增值税超过30万怎么纳税
  • 库存现金的主要内容有哪些
  • 合同履约成本与一份当前或预期取得的区别
  • 如何编制试算平衡表图示
  • 财务制度设置
  • 个人如何开增值税普通电子发票
  • 委托生产的会计分录
  • 车贷管理费合理吗
  • 给投资人的利润属于什么科目
  • 购买本公司产品未付款需要签名字吗
  • 公司现金收入存入私人老板账户
  • 如何查企业是否有问题
  • mysql跨服务器查询语句
  • Win10一键永久激活数字工具
  • ubuntu 8.04.1 LTS 下的cpu温度监控软件lm-sensors
  • win10 ie8浏览器
  • linux 指定动态库连接位置
  • 深入解析windows第7版
  • 简单模拟电路图
  • 导入项目出现这个问题
  • nodejs入门教程
  • node用mongodb还是mysql好
  • jquery可以实现哪些效果
  • adb shell命令
  • jquery 插件写法
  • js 字符串转字节
  • 湖北省税务系统欠税管理工作指南
  • 商场销售高档化妆品需要缴纳消费税吗
  • 张家港建行上班时间安排
  • 百旺金赋跨月专票作废
  • 申请电子发票需要盖章吗
  • 粮食部门是不是国家机关
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设