Android Handler
来源:互联网 发布:php做九九乘法表 编辑:程序博客网 时间:2024/06/06 00:29
1.Handler是一种android给我们提供用来更新UI的一套机制,也是一套消息处理的机制,我们可以发送消息,也可以通过它处理消息。
2.Hndroid在设计时,就封装了一套消息创建,传递,处理机制,如果不遵循这样的机制,就没办法更新UI信息的,就会跑出异常信息。
3.UI
更新Text:
import android.os.Handler;
private Handler handler = new Handler();
new Thread() {
@Override
public void run() {
try {
Thread.sleep(5000);
handler.post(new Runnable() {
@Override
public void run() {
tv.setText("uppdate thread");
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
更新图片:
bug:
Error:Execution failed for task ':app:mergeDebugResources'.
> C:\Users\qihao\Desktop\Android\MyApplication\app\src\main\res\drawable\3.jpg:
Error: The resource name must start with a letter
Bitmap too large to be uploaded into a texture (4098x2304, max=4096x4096)
Code:
private Handler handler = new Handler();
private int images[] = {R.drawable.x, R.drawable.y, R.drawable.z};
private int index;
private MyRunable myRunable = new MyRunable();
class MyRunable implements Runnable {
@Override
public void run() {
index++;
index = index % 3;
iv.setImageResource(images[index]);
handler.postDelayed(myRunable, 1000);
}
}
onCreate:
handler.postDelayed(myRunable, 1000);
4.Message
seedMessage:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
tv.setText(""+msg.arg1+"-"+msg.arg2);
}
};
new Thread(){
@Override
public void run() {
try {
Thread.sleep(5000);
Message message = new Message();
message.arg1 = 12;
message.arg2 = 15;
handler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
5.Handle 内部机制
内部跟Looper进行关联,Looper是个死循环,包含一个消息队列也就是MessageQueue。
handler负责发送消息;
Looper负责接收Handler发送的消息,并直接把消息回传给handler自己;
MessageQueue就是一个存储消息的容器;
6.Ctrl 学会看源码
2.Hndroid在设计时,就封装了一套消息创建,传递,处理机制,如果不遵循这样的机制,就没办法更新UI信息的,就会跑出异常信息。
3.UI
更新Text:
import android.os.Handler;
private Handler handler = new Handler();
new Thread() {
@Override
public void run() {
try {
Thread.sleep(5000);
handler.post(new Runnable() {
@Override
public void run() {
tv.setText("uppdate thread");
}
});
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
更新图片:
bug:
Error:Execution failed for task ':app:mergeDebugResources'.
> C:\Users\qihao\Desktop\Android\MyApplication\app\src\main\res\drawable\3.jpg:
Error: The resource name must start with a letter
Bitmap too large to be uploaded into a texture (4098x2304, max=4096x4096)
Code:
private Handler handler = new Handler();
private int images[] = {R.drawable.x, R.drawable.y, R.drawable.z};
private int index;
private MyRunable myRunable = new MyRunable();
class MyRunable implements Runnable {
@Override
public void run() {
index++;
index = index % 3;
iv.setImageResource(images[index]);
handler.postDelayed(myRunable, 1000);
}
}
onCreate:
handler.postDelayed(myRunable, 1000);
4.Message
seedMessage:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
tv.setText(""+msg.arg1+"-"+msg.arg2);
}
};
new Thread(){
@Override
public void run() {
try {
Thread.sleep(5000);
Message message = new Message();
message.arg1 = 12;
message.arg2 = 15;
handler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
5.Handle 内部机制
内部跟Looper进行关联,Looper是个死循环,包含一个消息队列也就是MessageQueue。
handler负责发送消息;
Looper负责接收Handler发送的消息,并直接把消息回传给handler自己;
MessageQueue就是一个存储消息的容器;
6.Ctrl 学会看源码
0 0
- android Handler
- android Handler
- android Handler
- android Handler
- Android Handler
- android---handler
- android-handler
- Android Handler
- Android Handler
- Android Handler
- android Handler
- android--Handler
- Android Handler
- Android Handler
- Android Handler
- Android Handler
- Android handler
- Android Handler
- 关于人脸检测方法的比较
- jQuery 之 (一)选择器、快捷操作
- 软件测试概述
- 必须知道的c++语法知识--1-18
- JS中Array方法中常用方法八:Array.prototype.unshift()
- Android Handler
- 【妄言之言】西南游记
- HTTP协议
- find命令
- mininet下获取openvswitch源码及自动化编译
- codeforces 158D 解题报告 数论+暴力
- 数码管——8段共阴极数码管
- 欢迎使用CSDN-markdown编辑器
- java集合框架系列---Map接口