绑定服务调用服务里的方法

activity绑定服务,等待服务被绑定成功后,返回服务里的内部类对象,activity在连接成功后拿到服务里的内部类对象,间接调用服务里的方法

A. activity中绑定服务

         intent = new Intent(this,MyService.class);

              mConn = new MyConn();

              Log.i(TAG, "1. 在activity中绑定服务");

              bindService(intent, mConn, BIND_AUTO_CREATE);

B. 服务被绑定成功

        @Override

              public IBinder onBind(Intent intent) {

                     Log.e(TAG, "2. 服务被绑定成功");

                     Log.e(TAG, "3. 在服务里创建一个内部类,在onBind方法中返给activity");

                     return new Boss();

              }

C. 在服务里创建一个内部类,在onBind方法中返给activity

/**

* 服务里的内部类

* 非你莫属内部人员

public class Boss extends Binder{
   public void qianShouMM(int money){
     if (money > 1000) {
           methodInService();
       }else {
              Toast.makeText(MyService.this, "没钱该干嘛干嘛去", 0).show();
        }
    }
}

D. activityService连接成功了

  /**
   * activity和Service的连接通道
   */
    private class MyConn implements ServiceConnection {
            @Override
          public void onServiceDisconnected(ComponentName name) {
          }
            @Override
          public void onServiceConnected(ComponentName name, IBinder service) {
                Log.i(TAG, "4. activity和Service连接成功了");
                Log.i(TAG, "5. 把IBinder强转成服务里的内部类");
                mService = (Boss)service;

          }

   }

E. IBinder强转成服务里的内部类

mService = (Boss)service;

F. 用服务里的内部类间接调用服务里的方法

mService.Boss(1000000);

 

原文地址:https://www.cnblogs.com/loaderman/p/6416245.html