Android开发中内存和UI优化
1.内存||效率
GC这东西对于开发人员用起来比较爽,但对于技术总监或产品总监来说,他们并不在乎,在乎的是用户运行App的流畅度,待你开发完了,笑眯眯的走过来,让你测试N个适配器,烦都烦死你。
说到这里,情不自禁的对比安卓和苹果,身处中国这么个“人手一个”安卓手机的国家,各种翻版的系统应运而生,苦了我们程序员啊,各种品牌机各种适配器各种侧,我擦啊!既要考虑适配又要考虑内存(虽说苹果这方面肯定也考虑) 再看看苹果,一个iphone4开机启动剩余内存只有512M左右,人家程序随便怎么跑,开好几个软件依然流畅。
GC啊,想说爱你不容易!
国内的安卓推广平台如此之多,许许多多广告软件必须得出来,随便下载一个游戏,一打开就弹个广告窗口,看个小说也给你突然来个广告。 所以说选择一个好的软件很重要平台。 苹果的软件,开发很快速,用的工具,用的组件全是一套东西,想不快都难,而且上传至app store也是需要经过严格审核,最近好像app store又要开发者提供详细的个人信息,否则上传app不予以通过。 哎,绿色的环境啊!
回归正题::
gzip 压缩http请求的数据,并且设置连接时间和响应时间
ListView 图片+文字列表,异步加载图片,并且在图片滑动时利用 不加载图片
下载web-image,利用线程池(可分为普通线程和核心线程的异步下载任务),将下载任务小,零碎文件置于核心线程,将图片下载任务放置在普通线程,避免由于文件过大堵塞线程池,从而最大限度的优化下载进度
尽量少用static静态变量来引用大的资源对象,比如:Context上下文
保证Cursor占用的内存被及时的释放掉,而不是等待GC来处理。并且Android明显是倾向于编程者手动的将Cursorclose掉
应用开发中自定义View的时候,交互部分,千万不要写成线程不断刷新界面显示,而是根据TouchListener事件主动触发界面的更新
线程也是造成内存泄露的一个重要的源头。线程产生内存泄露的主要原因在于线程生命周期的不可控
UI组件需要用到的图片是apk包自带的,那么一律用setImageResource或者setBackgroundResource,而不要根据resourceid(注意:get(getResources(),R.drawable.btn_achievement_normal)该方法通过resid转换为drawable,需要考虑回收的问题,如果drawable是对象私有对象,在对象销毁前是肯定不会释放内存的。)
2. UI优化
Layout:
Layout组件化,尽量使用merge及include复用
CSS:
使用styles,复用样式定义
软键盘:
软键盘的弹出控制,不要让其覆盖输入框
数字、字母和汉字混排占位问题:将数字和字母全角化.(由于现在大多数情况下我们的输入都是半角,所以字母和数字的占位无法确定,但是一旦全角化之后,数字、字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题。)
布局组件:
复杂布局使用RelativeLayout
Android开发中内存和UI优化的更多相关文章
- 在 Android开发中,性能优化策略十分重要
在 Android开发中,性能优化策略十分重要本文主要讲解性能优化中的布局优化,希望你们会喜欢.目录 示意图 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如 ...
- Android开发中如何解决加载大图片时内存溢出的问题
Android开发中如何解决加载大图片时内存溢出的问题 在Android开发过程中,我们经常会遇到加载的图片过大导致内存溢出的问题,其实类似这样的问题已经屡见不鲜了,下面将一些好的解决方案分享给 ...
- Android开发中常用的ListView列表的优化方式ViewHolder
在Android开发中难免会遇到大量的数据加载到ListView中进行显示, 然后其中最重要的数据传递桥梁Adapter适配器是常用的,随着市场的需 求变化ListView'条目中的内容是越来越多这就 ...
- 5个Android开发中比较常见的内存泄漏问题及解决办法
android中一个对象已经不需要了,但是其他对象还持有他的引用,导致他不能回收,导致这个对象暂存在内存中,这样内存泄漏就出现了. 内存泄漏出现多了,会是应用占用过多的没存,当占用的内存超过了系统 ...
- android开发中图片优化步骤
android开发中图片优化方法 1.图片加载方法,方便用户加载图片 /*** * 加载本地图片 * @param context:主运行函数实例 * @param bitAdress:图片地址,一般 ...
- Android开发中UI相关的问题总结
UI设计和实现是Android开发中必不可少的部分,UI做不好的话,丑到爆,APP性能再好,估计也不会有多少人用吧,而且如果UI和业务代码逻辑中间没有处理好,也会很影响APP的性能的.稍微总结一下,开 ...
- Android开发中,那些让您觉得相见恨晚的方法、类或接口
Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...
- 在android开发中使用multdex的方法-IT蓝豹为你整理
Android系统在安装应用时,往往需要优化Dex,而由于处理工具DexOpt对id数目的限制,导致其处理的数目不能超过65536个,因此在Android开发中,需要使用到MultiDex来解决这个问 ...
- 如何在Android开发中让你的代码更有效率
最近看了Google IO 2012年的一个视频,名字叫做Doing More With Less: Being a Good Android Citizen,主要是讲如何用少少的几句代码来改善And ...
随机推荐
- 如何把excel数据导入数据库
这里介绍2种把excel数据导入oracle数据库的方法. 1. 在excel中生成sql语句. 1)在数据列的右侧,第一行的任何位置输入="insert into table(xx,yyy ...
- [JS13] ActivetX
<HTML> <head> <title>JavaScript Unleashed</title> <script type="text ...
- Linux命令入门
// 查看日历cal // 修改密码passwd // 查看目录和文件ls -lls // 查看当前用户信息whoami // 查看当前在线用户userswho 在Linux中,可以使用 vi 编辑器 ...
- Git版本工具的使用
Git版本工具:Git是一个开源的分布式版本控制系统,可用于敏捷高效的处理任何或大或小的项目.详细介绍地址:https://git-scm.com/downloads.今天主要为大家分享一下怎样把本地 ...
- SQL问题集锦
1.union和union all的区别:http://www.cnblogs.com/xiangshu/articles/2054447.html
- Android视觉规范-间距规范与文字规范单位换算(dip、sp与px)
http://blog.csdn.net/shimiso/article/details/29826073 1.dip与px Android工程师在写页面时,margin值的单位是dip,而视觉设计师 ...
- 发布EWM RF ITS Mobile 相关服务
发布EWM RF ITS Mobile 相关服务 TCODE:SIAC_PUBLISH_ALL_INT ~XSRFCHECK = 0 SICF 参数: ~THEME 99 ~TRANSACTI ...
- Flv.js
Flv.js 是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash.由 bilibili 网站开源. 该项目依托于 Media Source Ex ...
- Ubuntu虚拟机JeOS安装-2016.08.28
根据官网的说明JeOS的镜像已经在官方不发行了,所以你在别的帖子里看到的安装jeos的镜像地址已经不适用了. 那么应该如何安装这种最小版本的linux操作系统呢? 其一,如果想要安装老版本的jeos系 ...
- Imagick总结及反思
2014-08-23 今天安装Imagick出现了很多问题,自己也有些着急,以下为各版本信息: ImageMagick: 安装版本:ImageMagick-6.5.8-Q16 安装目录:E:/PHPS ...