一个简单的能够通信 的 android 多线程 共需要 用到以下几个东西
Thread
handler
Message
Bundle
用形象的比喻说 Thread 是另一个城市的工厂 handler 是快递公司 message 是船 bundle 是集装箱
public class Mt extends Activity {
mhandler mh = new mhandler();
mthread mth = new mthread(3); //实例化一个线程
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mt);
mth.start(); //线程开始运行(运行 run(){} 里面的内容)
}
class mthread extends Thread {
/*1111
也可以 implements Runnable 好处是可以共享变量值
MyThread mt=new MyThread();
new Thread(mt).start(); 多次执行可多线程运算一个 变量
new Thread(mt).start();
*/
int m1;
Message msg = mh.obtainMessage(); //创建一个运箱子的船 new Message 也可以 但在简单使用里效率低
Bundle b=new Bundle(); //创建装货的箱子
public mthread(int m2){ //接收初始传递进来的数值
m1=m2;
}
public void run(){ //此处的代码 会在另一个 线程里运行
m1= m1+1;
b.putInt("shu",m1); //把运行得出的结果 装进箱子。。一个箱子里可以装很多货
msg.setData(b); //箱子装船
mh.sendMessage(msg); //送货
}
}
class mhandler extends Handler {
public mhandler() {
}
public mhandler(Looper L) {
super(L);
}
Bundle b ; //建立一个装数据用的箱子
@Override
public void handleMessage(Message msg) { //当有从另一线程传来的消息时 这里开始运行
super.handleMessage(msg);
b = msg.getData(); //msg是从另一线程传来的数据 ,先用箱子捕获数据
int shu = b.getInt("shu"); //再把数据从箱子里拿出来 (可以一次拿出很多)
// 以下根据 传来的 shu 更新 主线程
}
}
}