中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

多個線程之間的通信

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

娱乐| 通渭县| 安徽省| 漳平市| 浦城县| 米泉市| 柘荣县| 五常市| 新闻| 江门市| 射阳县| 延寿县| 自贡市| 瑞昌市| 香河县| 萨嘎县| 深水埗区| 前郭尔| 察隅县| 汕头市| 将乐县| 沙河市| 格尔木市| 苍南县| 孟连| 温宿县| 赫章县| 甘肃省| 高尔夫| 沙洋县| 察隅县| 萨迦县| 七台河市| 繁峙县| 平顶山市| 阿拉善右旗| 榆林市| 化德县| 钟山县| 阿合奇县| 平顶山市|