Android中 服务里的方法抽取成接口

1 写个类继承Service 重写 onBind方法 返回一个IBinder 对象(传递到连接成功时用)

2 服务中 写一个内部类 继承IBinder 并且实现一个接口(用于抽取方法)继承IBinder 是可以在1步骤中返回这个内部类的对象,内部类的对象可以调用服务中的其它方法。在实现接口的方法中 调用服务的方法。

3 写一个类 实现ServiceConnection服务连接,重写 连接成功 和连接失败的方法 ,连接成功时会传入一个IBinder 对象,就是上面那个内部类对象,这样就通过这个对象调用服务中的方法了。实现接口只是为了 限制访问服务中的相关方法的调用。把传入的对象 强制转换成接口对象


定义一个接口,里面定义方法,此方法实现的时候 调用服务中指定的方法
    public interface GetService{
        void getService();
    }

在继承服务中的类中 定义一个内部类 继承Binder 并且实现接口.内部类可以调用服务中的方法,所以用内部类实现接口中的方法,用此方法调用服务中的方法即可
public class MyService extends Service{
        public Ibinder onBind(Intent intent){
            //返回一个IBinder对象,给连接成功时用的 用来调用服务中的方法
            return new MidMan();
        }

      //内部类继承Binder 实现接口
        class MidMan extends Binder implements GetService{
            public void getService(){
                doServices();
            }
   }

        //定义并实现我们要用的服务中的方法
        public void doServices(){
            System.out.println("The Service Method!");

        }

        //服务中的其它方法,不给用
        public void doOtherServices(){
            System.out.println("inner use!");
        }

}


在Activity中
        private Intent int;
        private MyServiceConn conn
        GetService gs;
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            int = new Intent(this,MyService.class);
            conn = new MyServiceConn();

            //绑定服务
            bindService(int,conn,BIND_AUTO_CREATE);
        }

  //连接服务成功,调用此方法
     class MyServiceConn implements ServiceConnection{

                public void onServiceConnected(Component name,IBinder service){
                 //service 就是 上面onBind()返回的对象,强转是为了只让用接口里的方法
                  gs = (GetService) service;

              }

           public void onServiceDisconnected(Component name){

             }

     }
      //使用服务中指定的方法
        public void click(View view){
            gs.GetServices();//GetServices()调用我们想要的 doServices();

        }

    



转载于:https://www.cnblogs.com/exayong/p/5929818.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值