Android -HandleThread-给线程传参数
来源:互联网 发布:唐门炮哥脸型数据 编辑:程序博客网 时间:2024/06/06 18:20
最近看看了线程,有点乱,下面是个例子,我自己的理解是这样的:
1、实现了给线程传递参数;
2、实现了多线程;
如有不对请指点;
DEMO:http://download.csdn.net/detail/small5e4444/9058185
代码:
public class MainActivity extends Activity {
MyThread StartThread;private Handler handlerThread; int comRestart=0; int comJoin=0;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 开启一个线程 */ StartThread = new MyThread(); StartThread.start();}/** * MyThread * @author Administrator * */class MyThread extends Thread { public void run() { System.out.println("线程启动"); //建立消息循环的步骤 Looper.prepare();//1、初始化Looper handlerThread = new Handler(){//2、绑定handler到CustomThread实例的Looper对象 public void handleMessage (Message msg) {//3、定义处理消息的方法 switch(msg.what) { case 3://重启 System.out.println("线程收到A的数据--comRestart:"+comRestart); try { Thread.sleep(1000);//线程先等待1s,看是否收到了返回值; } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } while(comRestart<4){//连续执行之前的操作3次 if(comRestart==3){//三次发送都失败啦 /** * 处理数据 */ System.out.println("case 3命令--连续3次错误"); }else{ try { /** * 线程等待1s的目的是,等待我发送命令后的返回值,如果1秒内收到返回值,那么就停掉这个线程 * 如果1s内没有收到返回值,在这个线程里,连续发送3次之前的命令; * Demo,用System.out代替了命令 */ Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("comRestart没有收到正确数据,测试发送三次,第"+comRestart+"次"); //原来放了个自定义 发送命令的方法,发送命令 myRestart(); System.out.println("comRestart从新发送第"+comRestart+"次"); } comRestart++; } break; case 4://允许加入 System.out.println("线程收到A的数据--comJoin:"+comJoin); try { Thread.sleep(1000);//线程先等待1s,看是否收到了返回值; } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } while(comJoin<4){ if(comJoin==3){//三次发送都失败啦 }else{ try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("comJoin没有收到正确数据,测试发送三次,第"+comJoin+"次"); myjoin();//调用 System.out.println("comJoin从新发送第"+comJoin+"次"); } comJoin++; } break; } } }; Looper.loop();//4、启动消息循环 }}public void restart(View v){ myRestart(); //System.out.println("发送第一次命令:RESTART"); /** * 开启一个线程 判断3秒钟之内是否能收到返回值 */ comRestart=0; handlerThread.obtainMessage(3, "restart").sendToTarget();//发送消息到Thread实例}public void tojoin(View v){ myjoin();//调用 /** * 开启一个线程 判断3秒钟之内是否能收到返回值 * 给线程传参数 */ comJoin=0; handlerThread.obtainMessage(4, "comJoin").sendToTarget();//发送消息到Thread实例}private void myjoin(){ System.out.println("fsd-----发送命令:join");}private void myRestart(){ System.out.println("fsd-----发送命令:restart");}
}
0 0
- Android -HandleThread-给线程传参数
- Android HandleThread源码分析
- 【Android】HandleThread后台数据处理
- HandleThread
- 给线程传递参数
- 传递参数给线程
- 常用的几种方法给线程传参数
- 给线程处理函数传结构体参数
- 给线程传参数的三种方法
- android给子线程传值
- c#给线程传递参数的方法
- pthread_create()给创建的线程传递参数
- CreateThread给线程函数传递的参数
- 通过结构体传递参数给线程
- 通过结构体传递参数给线程
- 给iframe传参数
- 给内核传参数
- Android junit test case 如何传参数给testcase ?
- Qt Creator编译器设置:添加C++11支持
- 最长递增子序列 O nlgn时间复杂度
- GridView使用CommandField删除列实现删除时提示确认框
- Nginx日志处理
- Android Fragment——处理Fragment生命周期
- Android -HandleThread-给线程传参数
- Mars Chen的Broadcast Message Reciver实例总结
- file_get_contents超时设置时间
- JavaScript:this是什么?
- 微信开发第六篇服务器主动发送信息
- CSS样式表
- 做好自己,经营人际关系
- hdu4768Flyer(二分查找)
- 匈牙利算法