国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發使用Messenger及Handler進行通信的方法示例

2019-10-22 18:20:27
字體:
來源:轉載
供稿:網友

本文實例講述了Android開發使用Messenger及Handler進行通信的方法。分享給大家供大家參考,具體如下:

1. 客戶端service

public class MessageService extends Service { private static final int MSG_SET_VALUE = 0x110; private Handler mHandler = new Handler() {  public void handleMessage(Message msgFromClient) {   // 返回給客戶的信息   Message msgToClient = Message.obtain(msgFromClient);   switch (msgFromClient.what) {   // msg 客戶端傳來的消息   case MSG_SET_VALUE:    try {     msgToClient.what = MSG_SET_VALUE;     SystemClock.sleep(2000);     msgToClient.arg2 = msgFromClient.arg1 + msgFromClient.arg2;     //msgFromClient.replyTo.send(msgToClient);     //得到客戶端的信使對象,并向它發送消息     cMessenger = msgFromClient.replyTo;     cMessenger.send(msgToClient);    } catch (RemoteException e) {     e.printStackTrace();    }    break;   default:    break;   }  } }; private Messenger mMessager = new Messenger(mHandler); private Messenger cMessenger; @Override public IBinder onBind(Intent intent) {  return mMessager.getBinder(); } @Override public void onDestroy() {  cMessenger = null;  super.onDestroy(); }}

2. 服務器端service

public class MessageService extends Service { private static final int MSG_SET_VALUE = 0x110; private Handler mHandler = new Handler() {  public void handleMessage(Message msgFromClient) {   // 返回給客戶的信息   Message msgToClient = Message.obtain(msgFromClient);   switch (msgFromClient.what) {   // msg 客戶端傳來的消息   case MSG_SET_VALUE:    try {     msgToClient.what = MSG_SET_VALUE;     SystemClock.sleep(2000);     msgToClient.arg2 = msgFromClient.arg1 + msgFromClient.arg2;     //msgFromClient.replyTo.send(msgToClient);     //得到客戶端的信使對象,并向它發送消息     cMessenger = msgFromClient.replyTo;     cMessenger.send(msgToClient);    } catch (RemoteException e) {     e.printStackTrace();    }    break;   default:    break;   }  } }; private Messenger mMessager = new Messenger(mHandler); private Messenger cMessenger; @Override public IBinder onBind(Intent intent) {  return mMessager.getBinder(); } @Override public void onDestroy() {  cMessenger = null;  super.onDestroy(); }}

3. 客戶端使用

public class MainActivity extends Activity { private static final int MSG_SET_VALUE = 0x110; private TextView mTVStatus; // 連接狀態 private LinearLayout mLLContainer;// 用來添加接收到服務器返回的信息 private Messenger mService; // 客戶端信使 private boolean isConnecting; // 是否連接 private Handler mHandler = new Handler() {  public void handleMessage(Message msgFromServer) {   switch (msgFromServer.what) {   case MSG_SET_VALUE:    TextView tv = (TextView) findViewById(msgFromServer.arg1);    tv.setText(tv.getText() + "==>" + msgFromServer.arg2);    break;   }   super.handleMessage(msgFromServer);  }; }; private Messenger mMessenger = new Messenger(mHandler); @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  mTVStatus = (TextView) findViewById(R.id.tv_status);  mLLContainer = (LinearLayout) findViewById(R.id.ll_container); } int i = 0; public void send(View view){  try {   int a = i++;   int b = (int) (Math.random() * 100);   //創建一個tv,添加到LinearLayout中   TextView tv = new TextView(MainActivity.this);   tv.setText(a + " + " + b + " = caculating ...");   tv.setId(a);   mLLContainer.addView(tv);   Message msgFromClient = Message.obtain(null, MSG_SET_VALUE, a, b);   msgFromClient.replyTo = mMessenger;   if (isConnecting) {    //往服務端發送消息    mService.send(msgFromClient);   }  } catch (RemoteException e) {   e.printStackTrace();  } } public void bind(View view) {  Intent service = new Intent();  service.setAction("android.intent.action.MESSAGE_SERVER");  bindService(service, conn, Context.BIND_AUTO_CREATE); } private ServiceConnection conn = new ServiceConnection() {  @Override  public void onServiceDisconnected(ComponentName name) {   mService = null;   isConnecting = false;   mTVStatus.setText("已斷開連接!");  }  @Override  public void onServiceConnected(ComponentName name, IBinder service) {   mService = new Messenger(service);   isConnecting = true;   mTVStatus.setText("連接成功!");  } }; public void unbind(View view) {  unbindService(conn);  conn = null; } @Override protected void onDestroy() {  unbindService(conn);  conn = null;  super.onDestroy(); }}

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖市| 贵港市| 孝义市| 康保县| 南乐县| 五河县| 东光县| 青龙| 太湖县| 大理市| 安庆市| 井研县| 灵台县| 体育| 科技| 咸丰县| 咸宁市| 涡阳县| 调兵山市| 凤凰县| 陵川县| 武邑县| 凤山市| 长丰县| 康保县| 高阳县| 新干县| 安顺市| 陈巴尔虎旗| 普格县| 峨眉山市| 阜阳市| 隆回县| 乌审旗| 石景山区| 安塞县| 额济纳旗| 浦北县| 仙游县| 邵东县| 徐水县|