Android Service与Activity之间的通信(bindService启动方式)

@Override

public boolean onUnbind(Intent intent) {

Log.d(TAG, “------>onUnBind()”);

return super.onUnbind(intent);

}

public void show() {

Toast.makeText(this, “成功”, Toast.LENGTH_SHORT).show();

}

public class BasisBind extends Binder {

public void realize() {

show();

}

}

}

相对于上文Android Service的基本用法添加了一个 onUnbind方法,以及一些操作在这里插入图片描述

下面开始介绍下bindService启动方式

在这里插入图片描述

可以看到其中有三个参数,第二个参数如下

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805161527577.png?x-oss-process=ima
ge/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzYxMzk1,size_16,color_FFFFFF,t_70)

Java文件如下

public class StartSevice extends AppCompatActivity implements View.OnClickListener {

private Button btn_start;

private MyConn conn;

private BasisService.BasisBind basisBind;

private Button btn_stop;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_start_sevice);

conn = new MyConn();

initView();

}

private void initView() {

btn_start = (Button) findViewById(R.id.btn_start);

btn_start.setOnClickListener(this);

btn_stop = (Button) findViewById(R.id.btn_stop);

btn_stop.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_start:

//绑定的方式启动

Intent bindIntent = new Intent(this, BasisService.class);

bindService(bindIntent, conn, BIND_AUTO_CREATE);

break;

case R.id.btn_stop:

//建议写在onDestroy()方法中,这里只为显示效果

unbindService(conn);

break;

}

}

public void verify() {

//脱离了service的体系,不能用new对象来调用服务的方法

BasisService service = new BasisService();

service.show();

}

@Override

protected void onDestroy() {

super.onDestroy();

//解除绑定

unbindService(conn);

}

//ServiceConnection 服务连接

private class MyConn implements ServiceConnection {

//当服务连接时,如果绑定的服务onBind()没有返回值,则不执行该方法

//第三个参数iBinder:可以转化成在服务里写的自定义IBinder

@Override

public void onServiceConnected(ComponentName componentName, IBinder iBinder) {

//拿到中间人

basisBind = (BasisService.BasisBind) iBinder;

basisBind.realize();

}

@Override

public void onServiceDisconnected(ComponentName componentName) {

}

}

}

下面运行通过看日志了解一下其生命周期

1.绑定服务

在这里插入图片描述

2.多次绑定,没有日志

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值