startservice和bindservice的区别

来源:互联网 发布:淘宝比较好的男装店 编辑:程序博客网 时间:2024/05/29 03:22

之前的笔记,放上来做个记录。不当之处请大家指教!谢谢~


这两个方法都能启动服务,两者的使用场合不同

使用StartService()这个方法启动服务,调用者与服务之间没有关联,即使调用者退出后,服务仍然运行。

使用bindservice()启动服务,调用者与服务绑定在一起,调用者一旦退出了,服务也就终止了,有“不求同生,必须同死”的特点。

===============================

用StartService()启动服务是,服务尚未创建时,系统会先去调用服务的onCreate()方法,在调用onStart()方法。假使服务已经被创建了,多次使用StartService()方法不会导致多次创建服务,但会导致多次创建onStart()方法。如果服务是用onStart()方法启动,那么只能用stopService()来停止服务。服务结束时会调用onDestroy()方法。

用bindService()方法启动服务,在服务尚未创建时,系统先调用服务的onCreate()方法,接着调用onBind()方法,这时候调用者和服务绑定在一起,调用者退出时,系统会调用onUnbind()方法,接着会调用onDestroy()方法。如果调用bindService()前服务已经绑定多次调用bindService()方法并不会导致多次创建服务及绑定(也就是onCreate()方法和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务接触绑定,可以调用unbindservice()方法。调用该方法也会导致系统调用服务的onUnbind()和onDestroy()方法。

===============================

混合使用bindService()和StartService()方法

Service的onCreate()方法只会被调用一次

如果先bind了,那么start的时候会直接运行Service的onStart()方法。

如果你先start了,那么bind就直接onBind()

如果你先bind上了,那就stop不了,要先Unbindservie,再stopService



原创粉丝点击