首页 > 代码库 > 通过接口方式调用服务里面的方法

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

  接口可以隐藏代码内部的细节 让程序员暴露自己只想暴露的方法
  (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(){            洗桑拿();        }                    }        }

 

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