Android提供了Invalidate方法實現界面刷新,但是Invalidate不能直接在線程中調用,因為他是違背了單線程模型:androidUI操作並不是線程安全的,並且這些操作必須在UI線程中調用。

invalidate()是用來刷新View的,必須是在UI線程中進行工作。在修改某個view的顯示時,調用invalidate()才能看到重新繪製的界面。invalidate()的調用是把之前的舊的view從主UI線程隊列中pop掉。一個Android 程序默認情況下也只有一個進程,但一個進程下卻可以有許多個線程。

在這麼多線程當中,把主要是負責控制UI界面的顯示、更新和控件交互的線程稱為UI線程,由於onCreate()方法是由UI線程執行的,所以也可以把UI線程理解為主線程。其餘的線程可以理解為工作者線程。

invalidate()得在UI線程中被調動,在工作者線程中可以通過Handler來通知UI線程進行界面更新。

postInvalidate()在工作者線程中被調用

用invalidate()刷新界面new Thread(){

@Overridepublic void run() {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

super.run();

runOnUiThread(new Runnable() {

@Override

public void run() {

mRootView.invalidate(UPDATE_MODE_FULL_GC16);

}

});

}

}.start();

如果在 oncreate 直接呼叫是無法動作的

需用 Thread 去跑

android中view刷新界面,Android view invalidate()使用相关推荐

  1. Android中实现Bitmap在自定义View中的放大与拖动

    一基本实现思路: 基于View类实现自定义View –MyImageView类.在使用View的Activity类中完成OnTouchListener接口,实现对MotionEvent事件的监听与处理 ...

  2. Android中通过ViewHelper.setTranslationY实现View移动控制(NineOldAndroids开源项目)

    我们知道有不少开源project,能实现非常多不错的效果.前几天,我看了一个效果,刚好项目中也用到了这个jar包. 没事挖一挖 学一学(一说到挖一挖.那么问题来了.挖掘机技术究竟哪家强 ),看看不错的 ...

  3. android中返回刷新,Android intent 传递对象以及返回刷新

    之前项目需要,找过这方面知识.所以今天也总结一下.大家都知道activity跳转用intent,Android的当前页面跳转到新的页面.当然跳转的同时常常要携带数据或者对象.那我下面就说说跳转带对象吧 ...

  4. Android中微信主界面菜单栏的布局实现代码

    最近一段时间进了Android的大坑,一门心思的学习Android大法,读了两三本书,就萌生了模仿微信界面的想法. 分析Android版本的微信界面需求就会发现它的核心,不得不佩服微信界面的简洁和灵活 ...

  5. Android中步骤图界面的编写

    一.前言 相信大家在电脑版网页上经常看到这种情形:用户要完成某一件事情,需要经过多个步骤,这时页面上会以图形的方式显示总共有多少个步骤,当前处于第几步.对于手机端,这种用法相对而言要少一些,不过毕竟不 ...

  6. android仿酷狗界面,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果

    简介 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...

  7. android中edittext设置密码格式,Android 自定义EditText(带清理、密码可见、不可见)...

    实际开发中经常会遇到输入框,各种不同的需求,在一般情况下,清除内容,以及密码可见与不可见基本很常见,那么不废话直接上代码! 在res\values\attrs.xml中 .java import an ...

  8. android中开启线程处理,Android线程与消息处理

    一.实现多线程 1.创建线程 (1)通过Thread创建线程 Thread thread = new Thread(new Runnable(){ @Override public void run( ...

  9. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料

    由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 [x] [个人资料]() [x] [资料修改]() 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxu ...

最新文章

  1. 创业公司反内卷行为大赏
  2. 【软考-软件设计师】解释程序实现高级语言的三种方式
  3. javaScript PC端网页特效
  4. OUTLOOK2019 解决 无法验证您连接到的服务器使用的安全证书
  5. Java面向对象和类
  6. Chrome 为何会成功?
  7. obs中音频和视频的同步
  8. win10计算机权限不足是,深度技术windows10系统电脑权限不足导致无法格式化分区的方法...
  9. 节假日表-BaseHolidaysManager
  10. 【Git命令】git commit --amend
  11. 微信公众平台素材编辑与自动回复图文教程
  12. 在R语言中如何打开一般方法打不开的中文xls文件?
  13. 使用SpotBugs 进行代码检查
  14. MySQL 报错:ERROR 1137 (HY000): Can't reopen table: 'tempId'
  15. 关于互联网公司的加班制度,我想说点心里话
  16. 【DFT】安装octopus
  17. AD用户登录验证,遍历OU(LDAP)
  18. 如何在Win11 IE浏览器打开网银界面
  19. 微信支付:商家转账到零钱的开发
  20. 89C51数码管循环显示数字0~15

热门文章

  1. 常态化疫情防控下会展经济的“长沙蓝本”
  2. twig模板引擎使用php,Twig模板引擎用法入门教程_PHP
  3. html写登录框中的字,一个登录界面的PS设计和HTML/CSS实现
  4. linux挂载一个文件夹,linux挂载一个文件夹到另一个文件夹
  5. linux服务器无网络确认,Linux服务器故障排查实用指南
  6. mysql年份_【数据库_Mysql】查询当前年份的sql
  7. SQL语言学习(六)分组函数学习
  8. python中wraps的详解
  9. python获取指定目录下所有文件名os.walk和os.listdir
  10. python高阶函数的使用