Android中的多线程技术
这里主要是运用Handler消息处理机制。
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_main); 4 handler = new Handler(){ 5 //编号what为1的Message 6 public void handleMessage(Message msg){ 7 switch (msg.what) { 8 case 1: 9 Integer i = (Integer)msg.obj; 10 tvl.setText(i + ""); 11 break; 12 case 2: 13 Date d = (Date)msg.obj; 14 tv2.setText(d.toString()); 15 break; 16 } 17 } 18 };//handler就是当前主线程的消息队列(集合) 19 20 21 tvl = (TextView)super.findViewById(R.id.textView1); 22 btn1 = (Button)super.findViewById(R.id.button1); 23 24 btn1.setOnClickListener(new View.OnClickListener() { 25 26 @Override 27 public void onClick(View arg0) { 28 new Thread(new Runnable() { 29 @Override 30 public void run() { 31 while(flag){ 32 i++; 33 try { 34 Thread.sleep(1000); 35 } catch (InterruptedException e) { 36 // TODO Auto-generated catch block 37 e.printStackTrace(); 38 } 39 Message ms = new Message(); 40 ms.what = 1; //表示显示数字的消息 41 ms.obj = i; 42 handler.sendMessage(ms); 43 44 } 45 } 46 }).start(); 47 } 48 }); 49 50 tv2 = (TextView)super.findViewById(R.id.textView2); 51 btn2 = (Button)super.findViewById(R.id.button2); 52 btn2.setOnClickListener(new View.OnClickListener() { 53 @Override 54 public void onClick(View arg0) { 55 // TODO Auto-generated method stub 56 new Thread(new Runnable() { 57 public void run() { 58 while ( 1 == 1){ 59 try { 60 Thread.sleep(1000); 61 } catch (InterruptedException e) { 62 // TODO Auto-generated catch block 63 e.printStackTrace(); 64 } 65 Date d = new Date(); 66 Message msg = new Message(); 67 msg.what = 2; 68 msg.obj = d; 69 handler.sendMessage(msg); 70 } 71 } 72 }).start(); 73 74 } 75 }); 76 77 78 } 79 80 @Override 81 public boolean onCreateOptionsMenu(Menu menu) { 82 // Inflate the menu; this adds items to the action bar if it is present. 83 getMenuInflater().inflate(R.menu.main, menu); 84 return true; 85 } 86 87 }