Android 实现界面刷新的几种方法
作者:lqh 时间:2023-01-19 06:27:50
Android 界面刷新
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。
Android程序中可以使用的界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。
利用Handler刷新界面
实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。
// 在onCreate()中开启线程
new Thread(new GameThread()).start();、
// 实例化一个handler
Handler myHandler = new Handler()
{
//接收到消息后处理
public void handleMessage(Message msg)
{
switch (msg.what)
{
case Activity01.REFRESH:
mGameView.invalidate(); //刷新界面
break;
}
super.handleMessage(msg);
}
};
class GameThread implements Runnable
{
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
Message message = new Message();
message.what = Activity01.REFRESH;
//发送消息
Activity01.this.myHandler.sendMessage(message);
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
}
}
使用postInvalidate()刷新界面
使用postInvalidate则比较简单,不需要handler,直接在线程中调用postInvalidate即可。
class GameThread implements Runnable
{
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
//使用postInvalidate可以直接在线程中更新界面
mGameView.postInvalidate();
}
}
}
参考:
Android应用开发揭秘
Android文档
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
标签:Android,界面刷新
0
投稿
猜你喜欢
一文搞懂c# await,async执行流
2023-07-14 01:22:35
Java锁擦除与锁粗化概念和使用详解
2022-02-09 15:32:30
Android使用shape使组件呈现出特殊效果的方法
2022-06-28 03:42:27
Java基础学习之构造方法详解
2021-06-16 16:25:53
Java受检异常的一些思考
2021-06-08 08:22:16
Java开启JMX远程监控服务配置
2021-11-02 01:14:43
java实现电话本管理系统
2023-10-11 14:51:19
C语言压缩文件和用MD5算法校验文件完整性的实例教程
2023-04-01 05:21:49
Eclipse git推送上传错误问题解决方案
2022-07-19 15:19:39
Java关键字this与super详解用法
2023-05-28 05:28:04
集成apollo动态日志取缔logback-spring.xml配置
2021-10-15 16:53:19
java生成随机字符串的两种方法
2022-09-09 22:49:26
Android6.0获取动态权限代码示例
2022-07-22 10:35:15
在Android中动态添加Panel框架的实现代码
2022-01-17 23:17:07
C# String常用函数的使用详解
2022-04-05 05:29:02
java图形用户界面实现菜单功能
2023-11-23 11:50:58
基于Java8 Stream API实现数据抽取收集
2021-10-01 03:13:03
feign 如何获取请求真实目的ip地址
2021-08-13 15:47:49
C#/VB.NET 实现在PDF表格中添加条形码
2022-12-25 19:58:16
Java 精炼解读数据结构的链表的概念与实现
2022-03-02 05:17:11