柚子快报激活码778899分享:android
http://yzkb.51969.com/
这篇记录 android 消息机制中,MainThread 向 WorkThread 发送消息。( MainThread → WorkThread )
步骤:
1、准备looper对象
2、在子线程中生成handler对象
3、在MainThread发送消息
代码:
layout:
android:id="@+id/buttonId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送消息" />activity:package com.away.b_08_handler03;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {private Button button;private Handler handler;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.buttonId);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {System.out.println("OnClick:" + Thread.currentThread().getName());Message msg = handler.obtainMessage();handler.sendMessage(msg);}});WorkerThread wt = new WorkerThread();wt.start();}class WorkerThread extends Thread {@Overridepublic void run() {// 准备Looper对象Looper.prepare();// 在Workers Thread其中,生成一个Handler对象,用匿名内部类实现handler = new Handler() {@Overridepublic void handleMessage(Message msg) {System.out.println("WorkerThread:" + Thread.currentThread().getName());System.out.println("收到了消息对象!!");}};// 调用Looper的loop方法之后,Looper对象将不断地从消息队列其中取出消息对象,然后调用Handler的handleMessage()方法处理该消息对象// 假设消息队列其中没有对象,则该线程堵塞.Looper.loop();}}}效果:那么。为什么前边的演示样例中,我们怎么没有看到Looper.prepare()和Looper.loop()的调用呢?原因在于,我们的Activity是一个UI线程,执行在主线程中。Android系统会在Activity启动时为其创建一个消息队列和消息循环。欢迎交流 http://blog.csdn.net/ycwol/article/details/42084905柚子快报激活码778899分享:androidhttp://yzkb.51969.com/推荐链接评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。
android:id="@+id/buttonId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送消息" />activity:
package com.away.b_08_handler03;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.buttonId);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.out.println("OnClick:" + Thread.currentThread().getName());
Message msg = handler.obtainMessage();
handler.sendMessage(msg);
}
});
WorkerThread wt = new WorkerThread();
wt.start();
class WorkerThread extends Thread {
public void run() {
// 准备Looper对象
Looper.prepare();
// 在Workers Thread其中,生成一个Handler对象,用匿名内部类实现
handler = new Handler() {
public void handleMessage(Message msg) {
System.out.println("WorkerThread:" + Thread.currentThread().getName());
System.out.println("收到了消息对象!!");
};
// 调用Looper的loop方法之后,Looper对象将不断地从消息队列其中取出消息对象,然后调用Handler的handleMessage()方法处理该消息对象
// 假设消息队列其中没有对象,则该线程堵塞.
Looper.loop();
效果:
那么。为什么前边的演示样例中,我们怎么没有看到Looper.prepare()和Looper.loop()的调用呢?原因在于,我们的Activity是一个UI线程,执行在主线程中。Android系统会在Activity启动时为其创建一个消息队列和消息循环。
欢迎交流 http://blog.csdn.net/ycwol/article/details/42084905
推荐链接
本文由 用户 于 2024-05-23 发布在 夸智网,如有疑问,请联系我们。本文链接:https://www.kuazhi.com/post/714075363.html
web安全 人工智能 渗透 【宠粉赠书】大模型时代的网络安全:安恒“网安三剑客”实战指南
web安全 学习 自学黑客(网络安全)
vue.js javascript 前端 猿创征文|vue中使用Axios最佳实践
前端 pycharm ipython pandas beautifulsoup 从HTML提取表格数据到Excel:猫头虎博主的终极指南
pip缓存清理 OSError: [Errno 28] No space left on device Linux服务器中 pip和conda缓存查看和清理
语音识别 人工智能 Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
网络 网络协议 【华为】新版模拟器eNSP Lite安装攻略提前解锁
开发语言 【PHP】在ThinkPHP 5.0中设置缓存以提高性能
发表评论