当前位置: 首页 > news >正文

什么是销售型网站wordpress搜索字段

什么是销售型网站,wordpress搜索字段,织梦多个网站,星子网本文转自#xff1a;http://xwangly.iteye.com/blog/1109424 Messenger:信使 官方文档解释#xff1a;它引用了一个Handler对象#xff0c;以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Mess…本文转自http://xwangly.iteye.com/blog/1109424   Messenger:信使 官方文档解释它引用了一个Handler对象以便others能够向它发送消息(使用mMessenger.send(Message msg)方法)。该类允许跨进程间基于Message的通信(即两个进程间可以通过Message进行通信)在服务端使用Handler创建一个Messenger客户端持有这个Messenger就可以与服务端通信了。   以前我们使用HandlerMessage的方式进行通信都是在同一个进程中从线程持有一个主线程的Handler对象并向主线程发送消息。 而Android既然可以使用bindler机制进行跨进行通信所以我们当然可以将Handler与bindler结合起来进行跨进程发送消息。 查看API就可以发现Messenger就是这种方式的实现。 一般使用方法如下 。远程通过   Java代码   mMessenger  new Messenger(mHandler)    mMessenger new Messenger(mHandler)  创建一个信使对象 。客户端使用bindlerService请求连接远程 。远程onBind方法返回一个bindler   Java代码   return mMessenger.getBinder();    return mMessenger.getBinder();  4.客户端使用远程返回的bindler得到一个信使即得到远程信使   Java代码               public void onServiceConnected(ComponentName name, IBinder service) {                   rMessenger  new Messenger(service);           ......               }     public void onServiceConnected(ComponentName name, IBinder service) {rMessenger new Messenger(service);......}  这里虽然是new了一个Messenger但我们查看它的实现   Java代码   /**   * Create a Messenger from a raw IBinder, which had previously been   * retrieved with {link #getBinder}.   *    * param target The IBinder this Messenger should communicate with.   */  public Messenger(IBinder target) {       mTarget  IMessenger.Stub.asInterface(target);   }     /*** Create a Messenger from a raw IBinder, which had previously been* retrieved with {link #getBinder}.* * param target The IBinder this Messenger should communicate with.*/public Messenger(IBinder target) {mTarget IMessenger.Stub.asInterface(target);}  发现它的mTarget是通过Aidl得到的实际上就是远程创建的那个。 。客户端可以使用这个远程信使对象向远程发送消息rMessenger.send(msg); 这样远程服务端的Handler对象就能收到消息了然后可以在其handlerMessage(Message msg)方法中进行处理。该Handler对象就是第一步服务端创建Messenger时使用的参数mHandler.   经过这个步骤貌似只有客户端向服务端发送消息这样的消息传递是单向的那么如何实现双向传递呢 首先需要在第步稍加修改在send(msg)前通过msm.replyTo mMessenger将自己的信使设置到消息中这样服务端接收到消息时同时也得到了客户端的信使对象了然后服务端可以通过   Java代码   //得到客户端的信使对象并向它发送消息   cMessenger  msg.replyTo;   cMessenger.send(message);    //得到客户端的信使对象并向它发送消息 cMessenger msg.replyTo; cMessenger.send(message);  即完成了从服务端向客户端发送消息的功能这样客服端可以在自己的Handler对象的handlerMessage方法中接收服务端发送来的message进行处理。 双向通信宣告完成。   下面改写ApiDemos工程实现Messenger通信 MessengerService.java   Java代码   package com.xwangly.apidemo.app;     import java.util.Random;     import android.app.Service;   import android.content.Intent;   import android.os.Handler;   import android.os.IBinder;   import android.os.Message;   import android.os.Messenger;   import android.os.RemoteException;   import android.util.Log;     public class MessengerService extends Service {       private String TAG  MessengerService;         Override      public void onDestroy() {           // TODO Auto-generated method stub           Log.i(TAG, onDestroy);           cMessenger  null;           super.onDestroy();       }         Override      public boolean onUnbind(Intent intent) {           // TODO Auto-generated method stub           Log.i(TAG, onUnbind);           return super.onUnbind(intent);       }         static final int MSG_REGISTER_CLIENT  1;       static final int MSG_UNREGISTER_CLIENT  2;       static final int MSG_SET_VALUE  3;         private Random random  new Random();         private Handler mHandler  new Handler() {             Override          public void handleMessage(Message msg) {               // TODO Auto-generated method stub               Log.i(TAG, handleMessage);               switch (msg.what) {               case MSG_SET_VALUE:                   try {                       Message message  Message.obtain(null,                               MessengerService.MSG_SET_VALUE);                       message.arg1  random.nextInt(100);                                              //得到客户端的信使对象并向它发送消息                       cMessenger  msg.replyTo;                       cMessenger.send(message);                   } catch (RemoteException e) {                       // TODO Auto-generated catch block                       e.printStackTrace();                   }                   break;               default:                   super.handleMessage(msg);               }             }       };         /**       * 自己的信使对象       */      private Messenger mMessenger  new Messenger(mHandler);         /**       * 客户的信使       */      private Messenger cMessenger;         Override      public IBinder onBind(Intent intent) {           // TODO Auto-generated method stub           Log.i(TAG, onBind);           //返回自己信使的bindler,以供客户端通过这个bindler得到服务端的信使对象通过new Messenger(bindler)           return mMessenger.getBinder();       }         Override      public void onRebind(Intent intent) {           // TODO Auto-generated method stub           Log.i(TAG, onRebind);         }     }    package com.xwangly.apidemo.app;import java.util.Random;import android.app.Service; import android.content.Intent; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Messenger; import android.os.RemoteException; import android.util.Log;public class MessengerService extends Service {private String TAG MessengerService;Overridepublic void onDestroy() {// TODO Auto-generated method stubLog.i(TAG, onDestroy);cMessenger null;super.onDestroy();}Overridepublic boolean onUnbind(Intent intent) {// TODO Auto-generated method stubLog.i(TAG, onUnbind);return super.onUnbind(intent);}static final int MSG_REGISTER_CLIENT 1;static final int MSG_UNREGISTER_CLIENT 2;static final int MSG_SET_VALUE 3;private Random random new Random();private Handler mHandler new Handler() {Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubLog.i(TAG, handleMessage);switch (msg.what) {case MSG_SET_VALUE:try {Message message Message.obtain(null,MessengerService.MSG_SET_VALUE);message.arg1 random.nextInt(100);//得到客户端的信使对象并向它发送消息cMessenger msg.replyTo;cMessenger.send(message);} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}break;default:super.handleMessage(msg);}}};/*** 自己的信使对象*/private Messenger mMessenger new Messenger(mHandler);/*** 客户的信使*/private Messenger cMessenger;Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubLog.i(TAG, onBind);//返回自己信使的bindler,以供客户端通过这个bindler得到服务端的信使对象通过new Messenger(bindler)return mMessenger.getBinder();}Overridepublic void onRebind(Intent intent) {// TODO Auto-generated method stubLog.i(TAG, onRebind);}}MessengerServiceActivities.java   Java代码   package com.xwangly.apidemo.app;     import com.xwangly.apidemo.R;     import android.app.Activity;   import android.content.ComponentName;   import android.content.Intent;   import android.content.ServiceConnection;   import android.os.Bundle;   import android.os.Handler;   import android.os.IBinder;   import android.os.Message;   import android.os.Messenger;   import android.os.RemoteException;   import android.util.Log;   import android.view.View;   import android.widget.TextView;     public class MessengerServiceActivities {       public static class Binding extends Activity implements              View.OnClickListener {           private String TAG  Binding;             TextView mCallbackText;             private boolean isBound;             Override          protected void onCreate(Bundle savedInstanceState) {               // TODO Auto-generated method stub               super.onCreate(savedInstanceState);               setContentView(R.layout.messenger_service_binding);               findViewById(R.id.bind).setOnClickListener(this);               findViewById(R.id.unbind).setOnClickListener(this);                 mCallbackText  (TextView) findViewById(R.id.callback);               mCallbackText.setText(Not attached.);             }             private Handler mHandler  new Handler() {               Override              public void handleMessage(Message msg) {                   Log.i(TAG, handleMessage);                   switch (msg.what) {                   case MessengerService.MSG_SET_VALUE:                       mCallbackText.setText(Received from service:   msg.arg1);                       break;                   default:                       super.handleMessage(msg);                   }               }           };             /**           * 自己的信使           */          private Messenger mMessenger;                      /**           * 远程服务的信使           */          private Messenger rMessenger;                      private ServiceConnection connection  new ServiceConnection() {                 public void onServiceConnected(ComponentName name, IBinder service) {                   // TODO Auto-generated method stub                   Log.i(TAG, onServiceConnected);                   rMessenger  new Messenger(service);                   mMessenger  new Messenger(mHandler);                                      sendMessage();               }                   public void onServiceDisconnected(ComponentName name) {                   // TODO Auto-generated method stub                   rMessenger  null;               }           };             public void onClick(View v) {               // TODO Auto-generated method stub               Intent intent  new Intent(                       com.xwangly.apidemo.app.messenger_service);               switch (v.getId()) {               case R.id.bind:                   if (!isBound) {                       isBound  bindService(intent, connection, BIND_AUTO_CREATE);                       //isBound  true;                   }else {                       sendMessage();                   }                   break;               case R.id.unbind:                   if (isBound) {                       unbindService(connection);                       isBound  false;                   }                   break;               default:                   break;               }           }                      /**           * 使用服务端的信使向它发送一个消息。           */          private void sendMessage() {               // TODO Auto-generated method stub               Message message  Message.obtain(null, MessengerService.MSG_SET_VALUE);               message.replyTo  mMessenger;               try {                   rMessenger.send(message);               } catch (RemoteException e) {                   // TODO Auto-generated catch block                   e.printStackTrace();               }           }         }     }    package com.xwangly.apidemo.app;import com.xwangly.apidemo.R;import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.os.Message; import android.os.Messenger; import android.os.RemoteException; import android.util.Log; import android.view.View; import android.widget.TextView;public class MessengerServiceActivities {public static class Binding extends Activity implementsView.OnClickListener {private String TAG Binding;TextView mCallbackText;private boolean isBound;Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.messenger_service_binding);findViewById(R.id.bind).setOnClickListener(this);findViewById(R.id.unbind).setOnClickListener(this);mCallbackText (TextView) findViewById(R.id.callback);mCallbackText.setText(Not attached.);}private Handler mHandler new Handler() {Overridepublic void handleMessage(Message msg) {Log.i(TAG, handleMessage);switch (msg.what) {case MessengerService.MSG_SET_VALUE:mCallbackText.setText(Received from service: msg.arg1);break;default:super.handleMessage(msg);}}};/*** 自己的信使*/private Messenger mMessenger;/*** 远程服务的信使*/private Messenger rMessenger;private ServiceConnection connection new ServiceConnection() {public void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stubLog.i(TAG, onServiceConnected);rMessenger new Messenger(service);mMessenger new Messenger(mHandler);sendMessage();}public void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stubrMessenger null;}};public void onClick(View v) {// TODO Auto-generated method stubIntent intent new Intent(com.xwangly.apidemo.app.messenger_service);switch (v.getId()) {case R.id.bind:if (!isBound) {isBound bindService(intent, connection, BIND_AUTO_CREATE);//isBound true;}else {sendMessage();}break;case R.id.unbind:if (isBound) {unbindService(connection);isBound false;}break;default:break;}}/*** 使用服务端的信使向它发送一个消息。*/private void sendMessage() {// TODO Auto-generated method stubMessage message Message.obtain(null, MessengerService.MSG_SET_VALUE);message.replyTo mMessenger;try {rMessenger.send(message);} catch (RemoteException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}AndroidManifest.xml相关配置如下   Xml代码   service android:name.app.MessengerService       intent-filter          action android:namecom.xwangly.apidemo.app.messenger_service /      /intent-filter  /service        activity android:name.app.MessengerServiceActivities$Binding                android:labelstring/activity_messenger_service_binding                android:launchModesingleTop            intent-filter                action android:nameandroid.intent.action.MAIN /                category android:nameandroid.intent.category.LAUNCHER /            /intent-filter        /activity     service android:name.app.MessengerService intent-filteraction android:namecom.xwangly.apidemo.app.messenger_service //intent-filter/serviceactivity android:name.app.MessengerServiceActivities$Bindingandroid:labelstring/activity_messenger_service_bindingandroid:launchModesingleTopintent-filteraction android:nameandroid.intent.action.MAIN /category android:nameandroid.intent.category.LAUNCHER //intent-filter/activity  至于layout就不帖了两个按钮一个文本域。  转载于:https://www.cnblogs.com/freeliver54/archive/2011/12/27/2303790.html
http://www.pierceye.com/news/341874/

相关文章:

  • 建个人网站赚钱吗手机网站页面大小
  • php简单购物网站源码海口网红美食餐厅
  • 傻瓜式建站软件长沙做软件的公司
  • 旅行社营业网点可以做网站吗别人网站建设多少钱
  • 南宁设计网站建设教程网站建设
  • 柯城区住房和城乡建设局网站wordpress仿fe素材
  • 黄岛建设局网站用什么建设网站
  • 桂林dj网站郑州上海做网站的公司
  • 进入江苏省住房和城乡建设厅网站网络舆情监测 toom
  • 延安市建设工程交易中心网站seo网络营销推广优化
  • 网站一条龙服务教育类网站前置审批
  • 安徽省建设厅网站首页wordpress和typecho
  • 网站开发考试题torrentkitty磁力猫引擎
  • 如何把电脑改成服务器 做网站微信网站背景图片
  • 淘宝客网站建设详细教程链接交换平台
  • 外贸门户网站深圳网站制作开发排名
  • 如何建设一个稳定的网站photoshop网页制作视频教程
  • 企业网站建设合作合同28招商加盟网
  • 国外设计灵感网站WordPress数据库添加管理员
  • 山东省建设备案网站审批表免费设计手写签名
  • 家庭电脑做网站深圳罗湖网站制作公司
  • 聊城做wap网站服务有哪些做特卖的网站有哪些
  • wordpress後台建站flash美食网站论文
  • 网站服务器ip地址在哪里看用记事本做电影介绍的网站
  • 重庆企业建站公司沧浪企业建设网站价格
  • 免费建单页网站厂房出租做推广什么网站好
  • jquery网站模板下载做的网站显示不了背景图片
  • 图书管理系统网站开发教程怎么创建自己的网址
  • 网站网站是怎么做的专业app开发制作团队
  • 平顺网站建设应届生在淮北招的网站建设类型岗位