启动服务有两种方式:
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之间的数据传递了。 |
android---service的启动,和activity的通信
最新推荐文章于 2023-03-15 22:54:53 发布