-service 的作用:
与activity类似,都代表可执行的程序,service主要用于不需要与用户进行界面交互的场合,因为service没有界面。
service 的好处:
为避免Activity中的代码过多,使得代码不便于理解,可以将不需要于用户界面进行交互的代码写在Service中,
便于自己和别人读取。
service启动的两种方式:
1. startService() 方法 2.bindService()方法
1.定义service的子类继承Service,在Service中定义oncreate()方法(在service被创建时回调,从此以后不再执行),定义onStartContent()方法
(每次启动service时都会调用该方法,多次启动service时都会执行该方法), 在activity中,开启service,在合适的场合调用 startService();
service与访问者之间没有关联,即使访问者退出了,Service也仍然运行,所以必须调用stopService() 访问来停止service,防止发生OOM(内存溢出)
最后销毁 onDestroy() ;
适用范围: 访问者与Service之间无法进行数据交换、通信。
2. public boolean bindService(Intent service, ServiceConnection conn, int flags) {
return super.bindService(service, conn, flags);
}
在Activity中定义bindService() 方法(该方法只会执行一次), 其中他们的参数依次为
(1) service 为需要进行绑定的Service ;
(2).conn 为ServiceConnection对象,当service与activity连接成功后,会回调该对象的 onServiceConnected(ComponentName name,
IBinder service)方法 (其中service为在 Service类 中定义的IBinder对象) , 当发生异常终止后,会回调该对象的
onServiceDisconnected(ComponentName name) 方法。
在Service类中,定义onCreate() 方法,定义IBinder onBind(Intent intent)方法,在绑定Service的情况下,onBind(Intent intent) 方法返回的IBinder对象将会传给
Activity类中的service参数, 这样访问者就可通过该IBinder对象与Service进行通信了(该IBinder对象为 继承Binder的子类(例 :MyBinder)所创建的对象)。
然后就可以通过MyBinder 对象来访问Service的运行状态了,然后解除绑定 onUnbind() ,最后销毁 onDestroy() 。
service的生命周期:
1. startService() onCreate() onStartCommand()(若多次启动则会一直调用) onStopService()(被访问者调用) onDestroy()
2. bindService() onCreate() onBind()(与Service绑定) onUnbind() onDestroy()
自己对service的一些见解,能力有限,写的不好,请多多指点。