Android核心组件之Service

来源:互联网 发布:为什么开不了淘宝店 编辑:程序博客网 时间:2024/06/01 20:59

       对于初学者来说,Service相对于Activity和ContentProvider有一定难度,这里我们讲一下Service的使用。Service可以看做是一个没有界面的Activity。平时我们就可以发现,即使我们的手机界面离开了音乐播放器的界面,但是正在播放的歌曲并不会停止。这就是由于我们的Service在后台继续运行,为我们提供服务。有了Service我们就可以在听音乐的同时继续做其它的事情。

      服务运行在后台,不可与用户交互,也不可以自己启动,需要其它的context执行startService()开始服务或者执行bindService()开启服务。另外在每次启动Service时都要执行onCreate()方法,在结束时都需要执行onDestroy()方法。这就是Service的生命周期的一个重要的特点。

1.startService()方法生命周期

  如果通过startService()方法启动服务,则它的生命周期如下:

   onCreate-->onStart()-->onDestroy()

   这就是一个服务完整的生命流程,如果服务开启以后,再次开启则不会进入onCreate()方法,而是直接调用onStart()方法。

2.bindService()方法生命周期

  如果通过bindService()方法启动服务,则其声明如下:

 onCreate()--->onBind()--->onunbind()--->onDestroy()

 这种方法也一样,开始的时候必须先执行onCreate()方法,接着再执行onBind()方法进行绑定。当服务结束的时候,首先执行onUnbind()方法解除绑定,然后再执行onDestroy()方法销毁服务。

    如下是两种开启服务的方法:


                                                                          

      通过bindService()方法启动的服务,调用者于服务绑定在了一起。调用者一旦退出,服务也会相应的停止运行。而通过startService()方法就比较灵活一点,调用者的销毁,并不会影响服务的正常运行,知道Service运行到自己的stopSelf()方法,或者是气他组件显示地调用stopService()方法,服务才会停止。我们可以根据自己的需求,来选择一种比较适合的开启服务的方法。

以上所说的是Android Service中的本地服务,本地服务就是指应用程序内部的服务,而远程服务则是指通过IPC机制进行进程间通信的服务,这里我们就不做介绍了。


1 0
原创粉丝点击