• 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

  • 相关阅读:
    spring boot整合quartz存储到数据库
    java多线程定时器和java判断一个时间是否在时间区间内和用正则表达式获取String字符串之间的数据
    maven项目通过java加载mqtt存储到mysql数据库,实现发布和接收
    java往MongDB导入大量数据
    SSH面试题收藏
    Spring面试题
    Hibernate面试题收藏
    Spring MVC
    浅谈 Struts2 面试题收藏
    JSP 新闻发布会
  • 原文地址:https://www.cnblogs.com/xmaomao/p/3381017.html
Copyright © 2020-2023  润新知