位置: 编程技术 - 正文

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

  • 小型微利企业的从业人数和资产总额
  • 营业账簿印花税申报期限
  • 长期待摊费用摊销会计分录
  • 房地产企业增值税管理办法
  • 存款利息收入增值税是免税还是不征税
  • 报表申报错误怎么作废重报
  • 销售自产设备税率
  • 应收账款平均数
  • 个人独资公司可以控股其他公司吗
  • 工资条迟到扣款
  • 期初建账库存少录数量会计怎么处理
  • 社会团体收到的投资款怎么入账
  • 资产负债表金额越来越大代表什么
  • 购买材料自用不退款
  • 附加税的计提基数怎么算
  • 查土地补贴到啥单位查明
  • 工会发放员工福利的通知
  • 营改增后计税依据
  • 增值税税负率计算器
  • 外贸企业出口退税申报流程操作
  • 盈余公积可以发放工资吗
  • 小规模纳税人季度申报表怎么填
  • 拿到购房发票
  • 工程施工合同暂估价格入账会计分录
  • BT模式建设项目怎么处理税收?
  • 新版edge浏览器兼容ie
  • 苹果电脑快速启动键是哪个
  • 网络和共享中心在哪里打开
  • win10版本1909和22h2
  • 甘油三血脂高怎么办
  • php入门例子
  • 年终结算啥意思
  • 委托代销商品两种方式会计分录
  • 职工参加生育保险
  • 营改增建筑业范围
  • 建信融通e信通贴现几天到账
  • nerf代码
  • roc曲线绘制r语言
  • telnet命令大全
  • 劳务公司可以
  • 核销对哪些单据对应关系进行的操作
  • 用python创建一个列表
  • 织梦如何采集文章
  • 收到汽车会计分录
  • js中定义变量关键词是
  • 代收收款收据证明范本
  • 坏账准备在资产负债表哪里体现
  • sqlserver代理服务启动失败
  • 什么是存货周转期间
  • 租金收入会计科目
  • 销售货物的价外费用如何开票
  • 固定资产清理账务处理流程
  • 营改增后工程结算的账务处理
  • 投标保证金退还
  • 以前年度不合规发票如何调年报
  • 本年利润在借方表示什么意思
  • 电费发票未到怎么入账
  • 财务单独核算是什么意思
  • winxp系统纯净版
  • centos7查看目录
  • 用户访问控制手段
  • win10预览版好吗
  • jquery生成网页内容
  • div 绝对位置
  • 批处理注册reg文件
  • js的匿名函数
  • 深入理解计算机系统
  • 自动登入
  • cmd.parameters.addrange
  • python3 pygame
  • python中读取文件
  • 安卓解析xml的几种方式
  • 谈谈我对美国的印象
  • 内蒙古国家税务
  • 农机行业的市场前景
  • 出口退税是否缴纳所得税
  • 绵阳税务局副局长
  • 企业所得税账务如何处理
  • 国家税务总局全国增值税查验平台
  • 南通工伤网上申请流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设