绑定服务:调用远程服务中的方法

绑定服务:调用远程服务中的方法

音乐播放器 应用: 音乐后台长期播放. service. 绑定本地服务.


支付宝暴露一个支付的服务. 运行在支付宝安全支付的应用程序里面.
其他应用程序 进行支付, 找到激活支付宝的服务. 调用支付宝里面支付的方法.
绑定远程服务.


aidl: android interface definition language
安卓接口定义语言:
作用 让不同的应用程序 不同的进程之间可以沟通交流

IPC: inter process communication  进程间通讯



绑定远程服务和本地服务的区别:
1. 本地服务 直接定义IService.java的接口
   远程服务 定义一个 IService.adil文件  更改扩展名 删除public

2. 本地服务 extend Binder implement IServcie
   远程服务   extend IService.Stub

3. 本地服务 绑定成功  直接强制类型转换 IServcie
   远程服务 绑定成功    IService.Stub.asInterface(service)
 
 
 
 
-----------------------------------------------------------------------------------------------

public   class   MainActivity   extends   Activity {

       private   ServiceConnection    conn ;
       private   IService    iservice ;
      
       @Override
       protected   void   onCreate(Bundle savedInstanceState) {
               super .onCreate(savedInstanceState);
            setContentView(R.layout.   activity_main );
      }
      
       /**
       * 绑定服务
       *   @param   view
       */
       public   void   onbind(View view){
               //创建隐式意图
                        Intent intent=   new   Intent();
                        intent.setAction(   "com.itheima.givemoney" );
                           conn =   new   MyConn();
                        bindService(intent,   conn ,   BIND_AUTO_CREATE );
      }

      
       //创建一个类实现ServiceConnection接口
       private   class   MyConn    implements   ServiceConnection{

               //接收返回服务代理人
               @Override
               public   void   onServiceConnected(ComponentName name, IBinder service) {
                  
                     iservice =IService.Stub. asInterface(service);
                  System.   out .println(   "接收到了服务代理人......"   );
            }

               @Override
               public   void   onServiceDisconnected(ComponentName name) {
                  
                  
            }
            
            
      } 
      
      
      
       /**
       * 调用服务内方法
       *
       */
       public   void   dopay(View view){
               try   {
                     iservice .pay(   "张三" ,   "1234"   , 10000);
            }   catch   (RemoteException e) {
                  
                  e.printStackTrace();
            }
      }
      
      
       /**
       * activity销毁的时候解除绑定
       */
       @Override
       protected   void   onDestroy() {
          super .onDestroy();
       
          if ( conn != null ){
              unbindService(   conn );      //解除绑定
                conn =   null ;
        }
       
      }
      
      

}

 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值