91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

多個線程之間的通信

發布時間: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

永济市| 武威市| 安龙县| 旺苍县| 板桥市| 临洮县| 黎城县| 长春市| 达孜县| 左贡县| 城固县| 阳山县| 廉江市| 襄垣县| 应城市| 阳原县| 福泉市| 嘉义市| 丰镇市| 太和县| 台山市| 宁远县| 宁强县| 马关县| 汝城县| 武汉市| 静安区| 宁安市| 昌江| 安龙县| 稻城县| 来凤县| 招远市| 萝北县| 庆城县| 万载县| 东丽区| 习水县| 友谊县| 崇左市| 芷江|