android之旅18 服务2--绑定方式与启动方式
2016-01-04 20:35
323 查看
服务开启方式:
startService才有对应的服务优先级,该进程为服务进程,关闭为stopService
bindService也能启动服务,但所在进程不是服务进程,他与启动该服务的activity同生共死,触发方式是发现activity死了然后unBind(LOGCAT会打印很多错误)
startService启动的服务和activity没有任何联系了,activity死了,服务还在。
服务可以混合调用:先startService,然后bindService,用于又要返回IBinder又要有服务的进程优先级,一定要这么用。
混合停止的话要先解绑然后stop
不这么调用的话,就是先bind然后start,然后再stop再unbind的时候,stop不会调用任何生命周期(这个很奇怪),unbind的时候会先unbind然后destroy
-
startService才有对应的服务优先级,该进程为服务进程,关闭为stopService
bindService也能启动服务,但所在进程不是服务进程,他与启动该服务的activity同生共死,触发方式是发现activity死了然后unBind(LOGCAT会打印很多错误)
startService启动的服务和activity没有任何联系了,activity死了,服务还在。
服务可以混合调用:先startService,然后bindService,用于又要返回IBinder又要有服务的进程优先级,一定要这么用。
混合停止的话要先解绑然后stop
不这么调用的话,就是先bind然后start,然后再stop再unbind的时候,stop不会调用任何生命周期(这个很奇怪),unbind的时候会先unbind然后destroy
-
public void click2Bind(View v){ // conn = new MyServiceConn();解绑也会用到,一定要提出来公用 bindService(intent, conn, BIND_AUTO_CREATE); // 执行的生命周期是create--->bind,不会执行onStartCommand方法 } public void click2UnBind(View v){ unBindService(conn); //conn与绑定的那个对象实例是同一个 // 执行生命周期unBind--->destroy }
public class MyServiceConn implements ServiceConntection{ public void onServiceConnected(ComponentName name, IBinder service){ //当服务连接建立时候调用(绑定服务就是与服务建立一个连接) //service是onBind返回的对象 } public void onServiceDisconnected(ComponentName name){ } }
public class MyService extends Service{ //startService调用的时候不会调用Bind相关的服务 public IBinder onBind(Intent intent){ return new IBinderImpl();//startService是没有返回东西的 } public boolean onUnBind(Intent intent){ } public void doBusiness(){ //自定义实现的业务方法 } class IBinderImpl extends Binder{ public void doBusinessWraper(){ doBusiness(); } } }
相关文章推荐
- Android实战简易教程-第九枪(BitmapFactory.Options对资源图片进行缩放)
- Android监听返回键、Menu键、Home键、
- Android开发艺术探索小记(第一章)
- Android 工具类计划
- Android Fragment学习资料
- Android四大组件-Activity篇
- Android布局控件之LinearLayout详解
- 学习Android从0开始之基础篇(1)-Android的四大基本组件
- Android----------WindowManager
- android仿ios的时间滚动控件WheelView
- Android 应用增量升级 思路
- Android——SpannableString
- Android Studio快捷键整理
- Android Studio系列教程六--Gradle多渠道打包
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- Android Studio系列教程四--Gradle基础
- Android Studio系列教程三--快捷键
- Android Studio系列教程二--基本设置与运行
- 开源控件MPAndroidChart的使用
- Android-->Fragment生命周期详解(下)