Android服务的通信方式,Android Service和Activity的相互通信

释放双眼,带上耳机,听听看~!

Activity向Service通信

第一种方式:通过MyBinder方式调用Service方法

步骤

继承Binder 定义中间人对象

BanZhengService

public class BanZhengService extends Service {

//把我定义的中间人对象返回

@Override

public IBinder onBind(Intent intent) {

return new MyBinder();

}

//办证的方法

public void banZheng(int money){

if (money>1000) {

Toast.makeText(getApplicationContext(), "我是领导 把证给你办了", 1).show();

}else {

Toast.makeText(getApplicationContext(), "这点钱 还想办事....", 1).show();

}

}

//[1]定义中间人对象(IBinder)

public class MyBinder extends Binder{

public void callBanZheng(int money){

//调用办证的方法

banZheng(money);

}}}

重写ServiceConnection,onServiceConnected时调用中间人对象 绑定服务

MainActivity

public class MainActivity extends Activity {

private MyConn conn;

private MyBinder myBinder;//我定义的中间人对象

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

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

//连接服务

conn = new MyConn();

bindService(intent, conn, BIND_AUTO_CREATE);

}

//点击按钮调用服务里面办证的方法

public void click(View v) {

myBinder.callBanZheng(10000000);

}

//监视服务的状态

private class MyConn implements ServiceConnection{

//当服务连接成功调用

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

//获取中间人对象

myBinder = (MyBinder) service;

}

//失去连接

@Override

public void onServiceDisconnected(ComponentName name) {

}}

@Override

protected void onDestroy() {

//当activity 销毁的时候 解绑服务

unbindService(conn);

super.onDestroy();

}}

第二种方式:通过接口Iservice调用Service方法

使用借口调用service和直接调用其实本质都是一样的,只不过多了借口一个步骤,

即实现步骤

1.继承Binder 定义中间人对象

2.定义接口

public interface Iservice {

//把领导想暴露的方法都定义在接口里

public void callBanZheng(int money);

// public void callPlayMaJiang();

3.重写ServiceConnection,onServiceConnected时调用中间人对象,强转为接口(myBinder = (Iservice) service;) 绑定服务

这里就写一下不同的地方,其他都和上面的第一种一样

MainActivity

//监视服务的状态

private class MyConn implements ServiceConnection{

//当服务连接成功调用

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

//获取中间人对象

myBinder = (Iservice) service;

}

//失去连接

@Override

public void onServiceDisconnected(ComponentName name) {

}

}

@Override

protected void onDestroy() {

//当activity 销毁的时候 解绑服务

unbindService(conn);

super.onDestroy();

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值