Android中Service的通信机制

在上一篇博客中http://blog.csdn.net/redoq/article/details/52142868,我们对Service进行了粗略的讲解,这一篇博客我将介绍Service的通信机制,不足之处望指正。


由于Service的启动分为两种,所以我把Service的通信分为两种介绍

一:对于通过startService启动的服务

我们可以通过下面的代码将数据发送到Service中

启动服务的Activity中的代码

Intent i = new Intent(this,MyService.class);
i.putExtra("data","send data");
...
startService(i);

MyService中的代码,由于使用的是startService启动服务,所以这里用onStartCommand来接收数据

private String data = "";
 @Override
    public int onStartCommand(final Intent intent, int flags, int startId) {

        data = intent.getStringExtra("data");  //通过onStartCommand中的intent参数获取数据
        System.out.println("接收到的数据为:" + data);
        return super.onStartCommand(intent, flags, startId);
    }


输出结果  接收到的数据为:send data

通过startService传递数据虽然简单方便,但是不能将MyService中的数据返回到调用它的Activity,除非使用广播,我将在后面对广播进行讲解。

=============================================================================

二、通过bindService绑定服务传递数据

1、首先,我们重写MyService中的onBind()并新建一个类继承Binder

public class MyService extends Service {
   
    private String data = "";

    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return new MyBinder();   //将MyBinder对象返回给启动MyService的Activity
    }

    public class MyBinder extends Binder {
       //Binder类实现了IBinder接口
        public void setData(String data) {
            MyService.this.data = data;   //修改data的值
        }
    }
}

2、然后我们使用bindService绑定服务并重写onServiceConnected()和onServiceDisconnected()

MainActivity代码

    private MyService.MyBinder binder = null; //新建一个
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AidenWU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值