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

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

A. activity中绑定服务

1
2
3
4
5
6
7
intent = new Intent(this,MyService.class);
 
     mConn = new MyConn();
 
     Log.i(TAG, "1. 在activity中绑定服务");
 
     bindService(intent, mConn, BIND_AUTO_CREATE);

 

B. 服务被绑定成功

1
2
3
4
5
6
7
8
9
10
11
@Override
 
      public IBinder onBind(Intent intent) {
 
             Log.e(TAG, "2. 服务被绑定成功");
 
             Log.e(TAG, "3. 在服务里创建一个内部类,在onBind方法中返给activity");
 
             return new Boss();
 
      }

 

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

/**

* 服务里的内部类

* 非你莫属内部人员

1
2
3
4
5
6
7
8
9
public class Boss extends Binder{
   public void qianShouMM(int money){
     if (money > 1000) {
           methodInService();
       }else {
              Toast.makeText(MyService.this, "没钱该干嘛干嘛去", 0).show();
        }
    }
}

 

D. activityService连接成功了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * 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强转成服务里的内部类

 

1
mService = (Boss)service;

 

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

 

1
mService.Boss(1000000);

 

 

posted on   LoaderMan  阅读(329)  评论(0编辑  收藏  举报

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示