Service之startservice与bindservice
来源:互联网 发布:编程语言论坛 编辑:程序博客网 时间:2024/06/11 09:14
之前的项目用到了service,对于这个组件一直是一知半解的。今天有时间总结下:
1,启动一个service有两种方法:context.startservice与context.bindservice
2. service的生命周期:context.startservice来启动的时候oncreate()~onstartcommand()~context.stopService()~ondestory()
context.bindservice来启动是:oncreate()~onbind()~onunbind()~ondestory()
其中1),用bindservice来启动时,调用者,如activity,fragment与service实例绑定在一起,调用者退出,则service也结束
用startservice来调用时,即使app退出,service依然运行
2)混合避免使用着两种
3.context.bindservice的使用方法:
A: 在service里写一个继承自binder的内部类用以得到service的实例
重写onbind方法返回一个重写的binder实例
eg:
public class LocalService extends Service {
private static final String TAG = "LocalService";
private IBinder binder=new LocalService.LocalBinder();
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public void onCreate() {
Log.i(TAG, "onCreate");
//这里可以启动媒体播放器
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Log.i(TAG, "onStart");
super.onStart(intent, startId);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand");
return START_STICKY;
}
@Override
public void onDestroy() {
Log.i(TAG, "onDestroy");
super.onDestroy();
}
//定义内容类继承Binder
public class LocalBinder extends Binder{
//返回本地服务
LocalService getService(){
return LocalService.this;
}
}
}
B): 在调用者里 重写一个serviceconnection
eg:
new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName componentName, IBinder binder) {
//调用bindService方法启动服务时候,如果服务需要与activity交互,
//则通过onBind方法返回IBinder并返回当前本地服务
localService=((LocalService.LocalBinder)binder).getService();
//这里可以提示用户,或者调用服务的某些方法
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
localService=null;
//这里可以提示用户
}
}
}
C):调用时用context.bindservice(new intent(LocalService.class),new connection,Context.BIND_AUTO_CREATE)
- Service之startservice与bindservice
- Android Service之 startService与bindService
- Service(1)之Context.startService()与Context.bindService()区别 .
- Android组件之Service之startService、bindService
- android service startService与bindService的区别
- Service组件 startService() bindService()
- 【Android四大组件之Service】(三)Service中startService与bindService的区别
- Android之startService与bindService的区别
- Android学习札记三:初涉Service(1)之Context.startService()与Context.bindService()区别
- 初涉Service(1)之Context.startService()与Context.bindService()区别
- Android学习札记三:初涉Service(1)之Context.startService()与Context.bindService()区别(转)
- startService与bindService
- startService与bindService
- startService与bindService
- startService与bindService
- startService与bindService
- startService与bindService
- startService与bindService
- Longest Consecutive Sequence
- Swift 语言基础(1)-The basics
- mac上用homebrew安装并启动postgresql数据库
- 全排列和汉诺塔
- C++继承类的类型
- Service之startservice与bindservice
- 用C/C++实现代码的动态修改(SMC)
- 单例设计模式
- CVTE宣讲会之后
- 薁螄羆罿蒄螀蚂芁蒆蒃袁膁
- 肆芀荿蚀螅肃莅虿羈莈芁蚈
- 肅芆螂袄膀蒅蚂螇膆蚄袄蝿
- DFTween:unity最好的补间tween动画系统
- 螁袀肁芇薄螆肀荿蝿肅聿蒁