经过 start 方式开启服务 onCreate() -- > onStartCommand() -- > onDestory() 注意:若是服务已经开启,不会重复回调 onCreate() 方法,若是再次调用context.startService() 方法,service 而是会调用 onStart() 或者onStartCommand() 方法。中止服务须要调用 context.stopService() 方法,服务中止的时候回调 onDestory 被销毁。 特色:一旦服务开启就跟调用者(开启者)没有任何关系了。开启者退出了,服务还在后台长期的运行,开启者不能调用服务里面的方法。多线程
采用 bind 的方式开启服务 onCreate() -- > onBind() --> onUnbind() -- > onDestory() 注意:绑定服务不会调用 onStart() 或者onStartCommand()方法 特色:bind 的方式开启服务,绑定服务,调用者挂了,服务也会跟着挂掉。绑定者能够调用服务里面的方法。学习
本地服务线程
调用者和 service 在同一个进程里,因此运行在主进程的 main 线程中。因此不能进行耗时操做,能够采用在 service 里面建立一个 Thread 来执行任务。service 影响的是进程的生命周期,讨论与 Thread 的区别没有意义。 任何 Activity 均可以控制同一 Service,而系统也只会建立一个对应 Service 的实例。 学习地址cdn
远程服务blog
调用者和 service 不在同一个进程中,service 在单独的进程中的 main 线程,是一种跨进程通讯方式。学习地址生命周期
IntentService 是 Service 的子类,比普通的 Service 增长了额外的功能。先看Service自己存在两个问题:队列
特征 :进程