通过接口方式调用服务里面的方法

Posted iFat的笔记本

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过接口方式调用服务里面的方法相关的知识,希望对你有一定的参考价值。

  接口可以隐藏代码内部的细节 让程序员暴露自己只想暴露的方法
  (6)定义一个接口 把想暴露的方法都定义在接口里面 
  (7)我们定义的中间人对象 实现我们定义的接口
  (8)在获取我们定义的中间人对象方式变了
 
public interface Iservice {

    //把领导想暴露的方法 都定义在接口里面 
    public void callBanZheng(int money);
    
    public void callPlayMaJiang();
}

 

public class MainActivity extends Activity {

    private Iservice myBinder; //这个是我们定义的中间人对象
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
//        //开启服务 
        Intent intent = new Intent(this,TestService.class);
        //连接服务 TestService
        MyConn conn = new  MyConn();
        //绑定服务 
        bindService(intent, conn, BIND_AUTO_CREATE);
        
    }

    
    //点击按钮 调用TestService 服务里面的办证方法 
    public void click(View v) {
        //通过我们定义的中间人对象 间接调用服务里面的方法
        myBinder.callBanZheng(1020000);
//        myBinder.callPlayMaJiang();
//        myBinder.callXiSangNa();
        
        myBinder.callPlayMaJiang();
        
        
    }
    
    //监视服务的状态
    private class MyConn implements ServiceConnection{

        

        //当连接服务成功后
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            
            //[4]获取我们定义的中间人对象 
            myBinder = (Iservice) service;
        }

        //失去连接
        @Override
        public void onServiceDisconnected(ComponentName name) {
            
        }
        
    }
    
    
}

 

public class TestService extends Service {

    //当bindservice 
    @Override
    public IBinder onBind(Intent intent) {
        
        //[3]把我们定义的中间人对象返回
        return new MyBinder();
    }


    
    @Override
    public void onCreate() {
        super.onCreate();
    }

    //测试方法
    public void banZheng(int money){
        
        if (money > 1000) {
            Toast.makeText(getApplicationContext(), "我是领导 把证给你办了", 1).show();
        }else{
            
            Toast.makeText(getApplicationContext(), "这点钱 还想办事", 1).show();
        } 
            
    }
    
    //打麻将的方法
    public void playMaJiang(){
        
        System.out.println("陪客户打麻将");
    }
    
    
    //洗桑拿的方法
    public void 洗桑拿(){
        System.out.println("洗桑拿");
    }
    
    
    //[1定义一个中间人对象 ]
    
    private  class MyBinder extends Binder implements Iservice{
        
        //[2]定义一个方法 调用办证的方法 
        public void callBanZheng(int money){
            banZheng(money);
            
        }
        //定义一个调用打麻将的方法
        public void callPlayMaJiang(){
            playMaJiang();
        }
        
        //调用洗桑拿的方法
        public void callXiSangNa(){
            洗桑拿();
        }
        
        
    }
    
    
}

 

以上是关于通过接口方式调用服务里面的方法的主要内容,如果未能解决你的问题,请参考以下文章

通过bindservice方式调用服务方法里面的过程

微信小程序给了后台接口,前端怎样调用

微信小程序给了后台接口,前端怎样调用

片段 getActivity() 与接口回调?

什么是 MyBatis 的接口绑定?有哪些实现方式?

使用【Feign】调用接口