Android界面刷新方法
来源:互联网 发布:问答系统cms 编辑:程序博客网 时间:2024/05/22 06:42
Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。
Android界面刷新方法有两种,分别是利用Handler和利用postInvalidate()来实现在线程中刷新界面。
利用Handler刷新界面
实例化一个Handler对象,并重写handleMessage方法调用invalidate()实现界面刷新;而在线程中通过sendMessage发送界面更新消息。
[代码]java代码:
01
// 在onCreate()中开启线程
02
new
Thread(
new
GameThread()).start();
03
04
// 实例化一个handler
05
Handler myHandler =
new
Handler() {
06
//接收到消息后处理
07
public
void
handleMessage(Message msg) {
08
switch
(msg.what) {
09
case
Activity01.REFRESH:
10
mGameView.invalidate();
//刷新界面
11
break
;
12
}
13
super
.handleMessage(msg);
14
}
15
};
16
17
class
GameThread
implements
Runnable {
18
public
void
run() {
19
while
(!Thread.currentThread().isInterrupted()) {
20
Message message =
new
Message();
21
message.what = Activity01.REFRESH;
22
//发送消息
23
Activity01.
this
.myHandler.sendMessage(message);
24
try
{
25
Thread.sleep(
100
);
26
}
27
catch
(InterruptedException e) {
28
Thread.currentThread().interrupt();
29
}
30
}
31
}
32
}
使用postInvalidate则比较简单,不需要handler,直接在线程中调用postInvalidate即可。
[代码]java代码:
01
class
GameThread
implements
Runnable {
02
public
void
run() {
03
while
(!Thread.currentThread().isInterrupted()) {
04
try
{
05
Thread.sleep(
100
);
06
}
07
catch
(InterruptedException e) {
08
Thread.currentThread().interrupt();
09
}
10
11
// 使用postInvalidate可以直接在线程中更新界面
12
mGameView.postInvalidate();
13
}
14
}
15
}
- Android界面刷新方法
- Android界面刷新方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android界面刷新的方法
- Android 界面刷新
- android定时刷新界面
- android定时刷新界面
- Android界面刷新方式
- Android界面刷新
- 苹果开发技术: Cocoa 框架概述
- Notepad学习笔记(一)
- 网络syno数据包
- 线程——线程间的通信——wait()的区别 和sleep()
- hdu1729 Stone Game sg
- Android界面刷新方法
- 【HTTP协议】Transfer-Encoding: chunked 长度不确定的http报文
- wamp简单配置(更改phpmyadmin密码)
- Hadoop安装指南
- 一个错
- matlab画曲面图和显示latex标记
- qt笔记2
- 如何解决"Launching New_configuration"问题
- 类集Queue