android---service的启动,和activity的通信

启动服务有两种方式:
1,在java代码中调用
Intent intent = new Intent(this,ServiceDemo.class);
startService(intent);
来启动服务,如果当前已经开启了服务,那么调用 
startService(intent);后会重新执行onStartCommand和onStart方法。
2,在清单文件中注册一个服务 
<service 
            android:name="com.example.service.StudyService">
            <intent-filter >
                <action android:name="com.example.study.service"/>
            </intent-filter>
        </service>

然后在代码代码中调用 
startService(new Intent("com.example.study.service")); 

就可以开启一个服务。


服务还可以与某个activity进行绑定

 
ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
// TODO Auto-generated method stub
}
@Override
public void onServiceConnected(ComponentName arg0, IBinder binder) {
// TODO Auto-generated method stub
}
});
}
};
通过调用这个方法进行activity和服务的绑定,绑定成功后,可以在 onServiceConnected方法中得到binder 
 
bindService(new Intent(StudyService.ACTION), connection, BIND_AUTO_CREATE);


我们只需要在service中,重新定义Binder这个类 让他返回ServiceDemo   如下

public class MyBinder extends Binder{
public StudyService getService()
{
return StudyService.this;  //Studyservice就是指的ServiceDemo
}
} 

在onBinder方法中 return new MyBinder...然后  
onServiceConnected中的binder就是MyBinder类型了。

onServiceConnected中获得ServiceDemo后 就可以来调用服务里面定义的方法,我们可以设置接口来对数据进行传递,这样就是实现了Service和activity之间的数据传递了。
 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值