码迷,mamicode.com
首页 > 移动开发 > 详细

android四大组件之service生命周期

时间:2015-10-17 14:47:31      阅读:467      评论:0      收藏:0      [点我收藏+]

标签:

 和activity一样,service服务同为android的四大组件之一。而和activity不同的是,service并不会显示出来,也就是没有用户界面,它是后台运行的,但需要activity或其它context来触发。

       简单的一个例子是android手机里的音乐播放器,打开应用看得到的界面是activity,点击播放音乐启动的音乐服务则是service(听得到但看不到。例如舞台上的幕后服务者,为大家操作着音响和灯光,却从不亮相)。而且就算退出了音乐播放器,却依然能够在桌面或其它应用里面听得到音乐,那么何时停止呢,下面就开始介绍service的生命周期。

 

先附上service生命周期图

技术分享

图中左右分别为启动service的两种不同实现方式。

两种启动方式的区别:

通过startService()(左边)

service的生命周期:

context.startService()->onCreate()->onStartCommand()->service runing-->context.stopService()->onDestroy()->service stop

startService()经过onCreate->onStartCommand()(注意这里不是onStart(),原因是onStart()方法已被淘汰,被onStartCommand()方法所取代);

stopService()的时候直接调用onDestroy()。

当调用者直接退出而不stopService()的话,service将一直在后台运行,直到下次调用者再来stopService()或被系统强杀。

通过bindService()(右边)

service的生命周期:

context.bindService()->onCreate()->onBind()->service runing-->context.unbindService()->onUnbind()->onDestroy()->service stop

bindService()经过onCreate->onBind();

unbindService()的时候调用onUnbind()和onDestroy()。

调用者通过bindService()绑定服务时,调用者与service就成了结拜兄弟(不求同时生,但求同时死),调用者退出的话service也会跟着退出。

 

注意:

1、service的onCreate()只会调用一次,就是无论startService或bindService多少次,service都只会创建一次。

例如第一次startService时会调用onCreate()和onStartCommand(),第二次再startService时只会调用onStartCommand(),除非stopService之后再次startService才会再次调用onCreate()。

2、在service每一次的开启关闭过程中,onStartCommand()可多次调用(通过多次startService调用),但onCreate(),onBind(),onUnbind(),onDestory()只能调用一次

3、onbindService之后不能通过stopService停止service,只能通过unbindService取消绑定之后停止。

 

下面通过实例来加深理解

 

这是一个用户界面,通过点击按钮来启动和关闭service

技术分享
通过日志logcat来查看其生命周期

实验一、

1、点击startService

技术分享
2、再次点击startService
技术分享

实验二、
1、点击startService之后点击stopService
技术分享
2、再次点击startService
技术分享
实验三、

1、点击bindService
技术分享
2、接着点击unbindService或按返回键退出

技术分享
实验四、

1、点击bindService
技术分享

2、再次点击bindService或点击stopService

技术分享

实验五、

1、点击bindService之后点击startService

技术分享
2、接着点击unbindService
技术分享
3、接着点击stopService
技术分享

android四大组件之service生命周期

标签:

原文地址:http://www.cnblogs.com/kangweifeng/p/4887390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!