亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

多個線程之間的通信

發布時間:2020-04-01 16:56:49 來源:網絡 閱讀:540 作者:祝你幸福365 欄目:移動開發
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
/**
 * 1、子線程A發消息給子線程B
 * 2、子線程B發消息給主線程
 * 3、主線程更新界面
 * 具體實現思路
 * 1、構建兩個工作線程,SubThreadA和SubThreadB
 * 2、工作線程啟動時,在兩個工作線程中構建兩個Looper對象
 * 3、構建兩個工作線程Handler對象 SubHandlerA和SubHandlerB
 * 4、在SubHandlerA中獲取消息并將消息傳給SubHandlerB對象
 * 5、在SubHandlerB中獲取SubHandlerA的消息,并將消息傳給主線程
 * 6、主線程的MainHandler對象獲取消息以后更新界面
 * */
public class MainActivity extends Activity {
	private Looper looperA;
	private Looper looperB;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		new SubThreadA().start();
		new SubThreadB().start();
	}
	public void doClick(View view){
	   switch (view.getId()) {
	    case R.id.button1:sendMessage();break;
	    case R.id.button2:
	    	looperA.quit();
	    	looperB.quit();
	    	finish();break;
	    }
	}
	public void sendMessage(){
		Handler h=new SubHandlerA();
		Message.obtain(h, 1, "HelloWorld!").sendToTarget();
	}
 
	/**線程A*/
	class SubThreadA extends Thread{
		@Override
		public void run() {
			Looper.prepare();//Looper對象構建同時MQ也會構建
			looperA=Looper.myLooper();
			Looper.loop();
		}
	}
	/**線程B*/
	class SubThreadB extends Thread{
		@Override
		public void run() {
		    Looper.prepare();
		    looperB=Looper.myLooper();
		    Looper.loop();
		}
	}
	/**ThreadA的Handler*/
	
	class SubHandlerA extends Handler{
		public SubHandlerA(){
	        super(looperA);
		}
		@Override
		public void handleMessage(Message msg) {
			//1.獲取線程A的消息
			//Object obj=msg.obj;
			//2.構建線程B的HandlerB的對象
			Handler handler=new SubHandlerB();
			//3.將消息傳給HandlerB對象所對應的線程
			Message.obtain(handler, 2, msg.obj).sendToTarget();
		}
	}
	/**ThreadB的Handler*/
	class SubHandlerB extends Handler{
		public SubHandlerB(){
			super(looperB);
		}
		/**
		 * 此方法用于處理消息:處理線程A發過來的消息
		 * |-->獲取ThreadA的消息
		 * |-->將消息發給主線程
		 * 
		 * */
		@Override
		public void handleMessage(Message msg) {
			//獲取線程A的消息
			//Object mess=msg.obj;
			//構建主線程的handler
			Handler handler=new MainHandler();
			//借助主線程的Handler將消息發送到主線程???	
		    Message.obtain(handler, 3, msg.obj).sendToTarget();
		}
	}
	/**主線程的Handler*/
	class MainHandler extends Handler{
		public MainHandler() {
			super(Looper.getMainLooper());
		}
		@Override
		public void handleMessage(Message msg) {
			setTitle((String)msg.obj);
		}
	}
	
   

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泽库县| 南部县| 田东县| 江津市| 洛南县| 邵阳市| 垫江县| 特克斯县| 临西县| 甘孜| 息烽县| 莱芜市| 敖汉旗| 罗甸县| 盖州市| 甘德县| 太湖县| 漾濞| 松潘县| 平阳县| 巴塘县| 满洲里市| 尼玛县| 酉阳| 东至县| 德化县| 海口市| 绍兴县| 西宁市| 财经| 九龙县| 汝南县| 新安县| 宁津县| 瑞安市| 扶余县| 余姚市| 巴彦淖尔市| 突泉县| 全椒县| 龙胜|