此篇文章还是google官方2009年开发者日上的分享内容,前面两篇文章有过详细说明。
详细可用通过 www.cmd100.com 了解更多。
  • 情况说明

当程序的数据有改变的时候就需要更新屏幕,这个时候我们就采用invalidata方法。这个方法简单方便,而当我们调用这个方法的时候我们整个视图都发生了更新。而我们的数据一般情况下只是在某一个区域内做出改变,这个时候我们再去更新其他没有数据改变的区域就很浪费资源。这个时候我们考虑如何优化。

  • 解决办法

Android提供系统了两个局部更新数据的方法:

invalidate(Rect dirty);

invalidate(int left, int top, int right,int bottom);

利用这两个方法我们就可以只对需要更新的区域做出更新,其他不需要数据更新的区域就不会发生更新。这样节省了很多资源。

  • 实例分析:

在屏幕上触摸移动小图标。

  • 方法一:采用最简单的编码方法在每次响应移动事件的时候调用invalidate方法。

如图所示程序需要更新曲线框中的所有区域,也就是整个屏幕,而其中其他五个组件没有变化是不需要更新的。

  • 方法二:移动小圆圈改变的区域,其他区域不做更新。

如图所示程序只需要更新红色圆圈和粉红色圆圈所构成的矩形区域,即图中的虚线区域。

  • 效率展示:

方法一每秒更新18个frame

方法二  每秒48 个frame 更新

从图中可以看出局部更新的两个方法的效率是相同的。

欢迎大家通过cmd100 中国手机开发者联盟 交流和讨论。我的id是琴弦。

转载于:https://www.cnblogs.com/JerryBlog/archive/2011/01/06/android_refresh_request.html

android用户界面编程技巧——更新请求相关推荐

  1. Android Studio编程技巧

    在Google官方于日前举办的Android开发者峰会(Android Dev Summit)上,Android Studio团队做了"Android Studio For Experts& ...

  2. android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...

    1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...

  3. Android智能手机编程笔试题,android智能手机编程

    spContent=为什么学习Android手机编程?自己适合学Android开发吗?零基础能学习吗?学Android应该学哪些技术呢?本课程以"任务驱动"为中心,"用中 ...

  4. android: 多线程编程基础

    9.1   服务是什么 服务(Service)是 Android 中实现程序后台运行的解决方案,它非常适合用于去执行那 些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使 ...

  5. Android 学习资料(持续更新)

    概述 收集整理这份资料灵感来自于 trip_to_iOS, 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 Android 开发, 希望能快速帮助到他们快速入门, 找到适合自己学习 ...

  6. Android智能手机编程CNU--1.概述

    Android智能手机编程CNU–Android入门介绍 目录 1 智能手机的演变 2 Android操作系统的优势 3 Android的系统架构 4 Android的四个重要组件 5 Android ...

  7. Android 10种技巧可提升应用运行效果

    随着手机平台的发展和所提供应用的提升,质量成为应用成功的最重要因素.如果那些应用无法提供强大的功能和稳定的用户体验,那就会很快被用户卸载.开发者需要记住的是,虽然Android智能手机和平板电脑的速度 ...

  8. Android 4编程入门经典—开发智能手机与平板电脑应用

    Android 4编程入门经典 书名: Android 4编程入门经典 原书名: Beginning  Android 4 Application Development 重点指数 畅销书 作者: ( ...

  9. Android Socket编程

    花了大概两天的时间,终于把Android的Socket编程给整明白了.抽空和大家分享一下:  Socket Programming on Android  Socket 编程基础知识:  主要分服务器 ...

最新文章

  1. 蓝桥杯-本质上升序列-java
  2. DeepMind论文:深度压缩感知,新框架提升GAN性能
  3. 在Linux环境下mysql的root密码忘记解决方法
  4. 脑电分析系列[MNE-Python-19]| 可视化Evoked数据
  5. 学军中学推理社2017届招新试题
  6. 一天搞定HTML----标签语义化04
  7. Bootstrap在线编辑器简单分享
  8. acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法
  9. md5加密算法的C(C++)代码实现
  10. 基于Docker快速搭建ELK
  11. Going Deeper in Spiking Neural Networks: VGG and Residual Architectures
  12. 特斯拉Model 3再次停工!这一次还是因为自动化机器人……
  13. Android Audio音频通路(七)
  14. JavaSE基础之-Calendar时间类
  15. PHP 开发者如何做代码审查?
  16. 统计软件SAS入门教程:SAS程序初步
  17. 微信开放平台Android常见问题
  18. wordpress添加Auto Highslide图片灯箱效果
  19. 百度蜘蛛IP功能说明初稿
  20. ClickHouse 之 FORMAT 应用

热门文章

  1. Ubuntu 16.04退出anaconda环境
  2. C++中4种方式把字符串和数字连接起来(转载)
  3. 打造超炫的专属Eclipse
  4. 图---邻接矩阵 建立,深度遍历,广度遍历
  5. 二叉树的三种遍历(递归,栈)
  6. git merge用法_Git 基本命令 merge 和 rebase,你真的了解吗?
  7. linux云存储软件,推荐5个Linux云存储解决方案
  8. bat 等待输入_bat-批量修改文件或者文件夹名称
  9. 【script】python 中文汉字与url的转换
  10. linux c变量命名规则,C语言中变量名及函数名的命名规则与驼峰命名法