Handler在主线程创建和在子线程创建的示例(18)
2016-02-27 00:00
274 查看
摘要: 利用Handler来实现UI线程的更新的,Handler一般运行在主线程(UI)中,也可以在子线程中运用,但建议一般在主线中运用
//在主线程创建Handler,实现UI的更新,以下是一个例子 public class MainActivity extends Activity { private TextView text_show; // 在主线程中创建消息Handler // 主线程创建方式 Handler handler = new Handler() { // 要重写里面的方法 public void handleMessage(android.os.Message msg) { // 跟新UI,设置textview if (msg.what == 1) { text_show.setText((String) msg.obj); } }; };// 注意这里要分号 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text_show = (TextView) this.findViewById(R.id.text_show); } public void sendMessage(View view) { // 耗时工作在子线程,然后向主线程传递数据 new Thread(new Runnable() { @Override public void run() { // Message对象可以通过new出来,但不建议,通常使用 Message.obtain() 或 // Handler.obtainMessage() 方法来从消息池中获得空消息对象,以节省资源; Message message = Message.obtain(); message.what = 1; message.obj = "这是子线程,请接收"; // 封装完数据发送给主线程 handler.sendMessage(message); } }).start(); } } //在子线程运用的例子 public class SecondActivity extends Activity { private TextView text_show; // 在子线程中创建消息Handler // 子线程创建方式 private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text_show = (TextView) this.findViewById(R.id.text_show); new Mythread().start(); } public void sendMessage(View view) { Message message = Message.obtain(); message.what = 1; message.obj = "这是主线程在发送,请接收"; // 封装完数据发送给子线程 handler.sendMessage(message); } // Handler在子线程张处理消息 class Mythread extends Thread { @Override public void run() { // 1.创建looper Looper.prepare(); handler = new Handler() { // 要重写里面的方法 @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: Log.i("MainActivity", (String) msg.obj); break; } } };// 注意这里要分号 // 3.循环读取MessageQueue Looper.loop(); } } }
相关文章推荐
- 利用Handler配合线程来实现定时切换图片(18)
- 运用Handler.post()方法进行数据更新跟用Message对比(18)
- Handler配合数据下载,网上下载并解析JSON的例子(18)
- Handler内存泄露的改进(18)
- 自己综合的一个常用下载和上传工具类:HttpClientUtils(18)
- 一个在ActionBar上显示图标和菜单PopupMenu的小示例(19)
- 在ActionBar显示ShareActionProvider分享文本,点击可以打开进行分享(19)
- ActionBar上显示自己自定义的一个SearchView(19)
- ViewPager的一个简单示例,这个比较乱(20)
- 第10课:底实战详解使用Java开发Spark程序学习笔记
- spring【7】(spring事务详解)
- 算法:回溯算法之九宫格
- WINDOWS API HOOK
- js keypress 对输入中文不响应
- 本地远程连接linux服务器的mysql数据库
- redmine数据备份
- redmine版本控制svn
- Netty精粹之TCP粘包拆包问题
- OC高效率52之理解NSCopying协议
- NIO总结