线程01
package jxnu.edu.cn.x3321; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.*; public class MainActivity extends Activity { //1.定义成员变量 Button bt; TextView tv; Handler hd=new Handler() { public void handleMessage(Message msg) {//这个是在重写Handler里的handleMessage方法 if(msg.what==1) { //不断地更新TextView的值 tv.setText(String.valueOf(msg.obj)); } //处理线程1的过程 } }; //message不断发送数据存到栈里,系统会每隔一段时间就会执行handler的handlemessage方法 从栈顶拿出对应的messgae @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //2.初始化 init(); //3.定义注册事件监听器 bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //生成一个线程 方法:1.实现接口 2.new一个 new Thread() { public void run() { for(int i=0;i<10;i++) { try { Thread.sleep(1000); //以毫秒为单位 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //可能会产生异常所以要用trycatch裹起来 //用messgae对象封装好数据传给主线程 Message ms=new Message(); ms.obj="更新后的值为:"+i; //这句就是给ms赋值 是object类型 ms.what=1;//what表示数据的类型或者是标识 其他子线程what为2 相当于编个号 //接下来通过什么方式发给主线程 通过什么工具 hd.sendMessage(ms); //hd.post(ms);还可以用这个 用这个就可以不要写sendmessage方法了 下节课讲 } }//这个方法是任何线程都要有的 这是线程的入口 一旦启动线程就开始执行run方法(相当于main) //线程可以休眠!(任何子线程都可以休眠 主不可以) }.start(); } }); } private void init() { // TODO Auto-generated method stub bt=(Button)this.findViewById(R.id.bt); tv=(TextView)this.findViewById(R.id.tv); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }