Android的Handler总结
【摘要】
一、Handler的定义:
主要接受子线程发送的数据, 并用此数据配合主线程更新UI.
解释: 当应用程序启动时,...
以下为一个实例,它实现的功能为 : 通过线程修改界面Button的内容
-
public class MyHandlerActivity extends Activity {
-
Button button;
-
MyHandler myHandler;
-
-
protected void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.handlertest);
-
-
button = (Button) findViewById(R.id.button);
-
myHandler = new MyHandler();
-
// 当创建一个新的Handler实例时, 它会绑定到当前线程和消息的队列中,开始分发数据
-
// Handler有两个作用, (1) : 定时执行Message和Runnalbe 对象
-
// (2): 让一个动作,在不同的线程中执行.
-
-
// 它安排消息,用以下方法
-
// post(Runnable)
-
// postAtTime(Runnable,long)
-
// postDelayed(Runnable,long)
-
// sendEmptyMessage(int)
-
// sendMessage(Message);
-
// sendMessageAtTime(Message,long)
-
// sendMessageDelayed(Message,long)
-
-
// 以上方法以 post开头的允许你处理Runnable对象
-
//sendMessage()允许你处理Message对象(Message里可以包含数据,)
-
-
MyThread m = new MyThread();
-
new Thread(m).start();
-
}
-
-
/**
-
* 接受消息,处理消息 ,此Handler会与当前主线程一块运行
-
* */
-
-
class MyHandler extends Handler {
-
public MyHandler() {
-
}
-
-
public MyHandler(Looper L) {
-
super(L);
-
}
-
-
// 子类必须重写此方法,接受数据
-
@Override
-
public void handleMessage(Message msg) {
-
// TODO Auto-generated method stub
-
Log.d("MyHandler", "handleMessage......");
-
super.handleMessage(msg);
-
// 此处可以更新UI
-
Bundle b = msg.getData();
-
String color = b.getString("color");
-
MyHandlerActivity.this.button.append(color);
-
-
}
-
}
-
-
class MyThread implements Runnable {
-
public void run() {
-
-
try {
-
Thread.sleep(10000);
-
} catch (InterruptedException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
-
Log.d("thread.......", "mThread........");
-
Message msg = new Message();
-
Bundle b = new Bundle();// 存放数据
-
b.putString("color", "我的");
-
msg.setData(b);
-
-
MyHandlerActivity.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI
-
-
}
-
}
文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。
原文链接:panda1234lee.blog.csdn.net/article/details/8675084
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)