Android Handler、Loop 的简单使用
package lib.com.myapplication; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private Handler handler1 ; private Handler handler2 ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new MyThread1().start(); new MyThread2().start(); } class MyThread1 extends Thread { @Override public void run() { super.run(); Looper.prepare(); handler1 = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println( "threadName--" + Thread.currentThread().getName() + "messageWhat-"+ msg.what ); } }; try { sleep( 3000 ); } catch (InterruptedException e) { e.printStackTrace(); } handler2.sendEmptyMessage( 2 ) ; Looper.loop(); } } class MyThread2 extends Thread { @Override public void run() { super.run(); Looper.prepare(); handler2 = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); System.out.println( "threadName--" + Thread.currentThread().getName() + "messageWhat-"+ msg.what ); } }; try { sleep( 4000 ); } catch (InterruptedException e) { e.printStackTrace(); } handler1.sendEmptyMessage( 5 ) ; Looper.loop(); } } }
注意:
1、调用Looper类的 prepare()
方法可以为当前线程创建一个消息循环,调用loop()
方法使之处理信息,直到循环结束。
2、Handler有几个构造重载,如果构造时不提供Looper类对象参数,会获取当前线程的Looper对象,即将当前线程的消息循环作为Handler关联的消息循环。
3、消息处理机制中,消息存放在一个消息队列中,而线程围绕这个队列进入一个无限循环,直到程序退出。
如果队列中有消息,线程就会把消息取出来,并分发给相应的Handler进行处理;
如果队列中没有消息,线程就会进入空闲等待状态,等待下一个消息的到来。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android 更新UI的几种方式
1、Activity的runOnUiThread textView = (TextView) findViewById( R.id.tv ); new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { textView.setText( "更新UI了"); } }); } }).start(); android Activity runOnUiThread() 方法使用 2、Handler sendEmptyMessage() package lib.com.myapplication; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; ...
- 下一篇
Android http 的使用
1、okHttp https://github.com/square/okhttp 2、okhttp-utils https://github.com/hongyangAndroid/okhttp-utils 3、NoHttp https://github.com/yanzhenjie/NoHttp 4、okhttp-OkGo https://github.com/jeasonlzy/okhttp-OkGo 5、最原生的http package www.yiba.com.wifisdk.http; import android.os.Build; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.HttpUR...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境