Android Handler Runnable Message Thread 简单用法
2015-09-09 09:17
477 查看
package com.tz.anr; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private Button start,ts,stop; private boolean flag; private int i = 0; private Handler handler = new Handler(){ public void handleMessage(Message msg) { //消息接收到了 int what = msg.what; switch (what) { case 1: String text = (String) msg.obj; ts.setText(text); break; case 2: //刷新其他UI break; default: break; } }; }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); start = (Button) findViewById(R.id.start); ts = (Button) findViewById(R.id.ts); stop = (Button) findViewById(R.id.stop); start.setOnClickListener(this); ts.setOnClickListener(this); stop.setOnClickListener(this); flag = true; MyRunnableThread myRunnableThread = new MyRunnableThread(); Thread thread = new Thread(myRunnableThread); thread.start();//连接服务 // Thread.sleep(10000); //通过连接获取到的资源 if(i == 10001){ Toast.makeText(this, "danny is handsome", 3000).show(); }else{ Toast.makeText(this, "danny is very handsome", 3000).show(); } // String threadName = Thread.currentThread().getName(); // Toast.makeText(this, threadName, 1000).show(); } public void onClick(View v) { switch (v.getId()) { case R.id.start: // MyThread thread = new MyThread(); thread.start(); break; case R.id.ts: // Toast.makeText(this, "吐司", 1000).show(); handler.post(run_handler); break; case R.id.stop: handler.removeCallbacks(run_handler);//停止循环 break; default: break; } } private Runnable run_handler = new Runnable() { public void run() { i++; ts.setText("runnable 刷新UI"+i+"次"); handler.postDelayed(run_handler, 100); } }; private class MyRunnableThread implements Runnable{ public void run() { while(flag){ i++; if(i>10000){ flag = false; } } } } private class MyThread extends Thread{ @Override public void run() { // TODO Auto-generated method stub super.run(); //5秒以后让吐司文本变成Danny try { Thread.sleep(5000); // ts.setText("Danny"); //使用Handler //消息 // Message msg = new Message();//初始化方式 Message msg_ob = handler.obtainMessage();//使用了池的概念 msg_ob.obj = "你家的牛在我菜园吃菜"; msg_ob.what = 1;//企业开发用常量 msg_ob.sendToTarget(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
相关文章推荐
- Android的Style的使用和用处
- android自定义弹出框样式实现
- android开发 如何调用SO
- Android常用工具类
- 我的Android进阶之旅------>(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?
- android开源系列:CircleImageView采用圆形控制它们的定义
- Android开源框架
- 解读Android之数据存储方案
- android开发之路---android studio 配置问题
- Android之ProgressBar ProgressDialog 进度条 进度条对话框
- 关于Fragment嵌套的一些坑
- Android 对话框(Dialog)大全 建立你自己的对话框
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- Android Api Demos登顶之路(六十一)Content-->PickContacts
- 加速Android Studio/Gradle构建
- Android采用ListView实现数据列表显示1-使用SimpleCursorAdapter进行数据绑定
- 【Android】2015.09.08 第一行代码 Day6 Count:8
- android BaseAdapter
- [苏州园区腾飞创新园/微往招聘]Java高级工程师、IOS研发工程师、Android研发工程师招聘!
- Android开发工程师(高薪急聘)