Handler

服务端代码
Handler是系统对AIDL的轻量级封装
利用Handler以及Messager

实现跨进程服务端与客户端通信

public class MessagerService extends Service{        
private static class MessagerHandler extends Handler{        
@Override        
public void handleMessage(Message msg) {            
switch (msg.what){                
case 1:                   
msg.getData().getString("msg");                    
Messenger clien = msg.replyTo;                   
Message msgs = Message.obtain(null,2);                    
Bundle b = new Bundle();                    
b.putString("reply","roger that");                    
msgs.setData(b);                    
try {                        
clien.send(msgs);                    
} catch (RemoteException e) {                        
e.printStackTrace();                    
}                    
break;           
 }            
super.handleMessage(msg);        
}    }        
private Messenger messagerHandler = new Messenger(new MessagerHandler());        
@Override    
public IBinder onBind(Intent intent) {        
return messagerHandler.getBinder();   
}}

客户端代码

public class MessageActivity extends Activity{    
private Messenger mService;    
private Messenger mGerReply =new Messenger(new ReplyMessager());    
private ServiceConnection mServiceConnection = new ServiceConnection() {        
@Override       
 public void onServiceConnected(ComponentName componentName, IBinder service) {            
mService = new Messenger(service);            
Message msg = Message.obtain(null,1);           
 Bundle b = new Bundle();
            b.putString("2","send");
            msg.setData(b);
            msg.replyTo = mGerReply; 
           try {
                mService.send(msg);
            }catch (Exception e){
                e.printStackTrace(); 
           }
        }
        @Override
        public void onServiceDisconnected(ComponentName componentName) {
        }    };
    private static class ReplyMessager extends Handler{ 
       @Override
        public void handleMessage(Message msg) {
            switch (msg.what){ 
               case 2: 
                   msg.getData().getString("reply");
                    break; 
           } 
           super.handleMessage(msg); 
       }    } 
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 
       Intent intent = new Intent(this, MessagerService.class);        bindService(intent,mServiceConnection, Context.BIND_AUTO_CREATE);
    } 
   @Override
    protected void onDestroy() {
        unbindService(mServiceConnection);
        super.onDestroy();    }

你可能感兴趣的:(Handler)