浏览 8249 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-01-16
下面我们具体讲解一下Service: Service概念及用途: Service 是 Android 系统中的一种组件,它和Activity 的级别差不多,但又Activity不同,它是不能与用户交互的,但可以和其他组件进行交互。它不能自己运行,只能后台运行。 如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那我们什么时候会用到Service呢?比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不用Service,我们就听不到歌了,所以这时候就得用到Service了,又比如当我们一个应用的数据是通过网络获取的,不同时间(一段时间)的数据是不同的这时候我们可以用Service在后台定时更新,而不用每打开应用的时候在去获取。 Service生命周期: Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法,具体的可以看下面的实例。 Service与Activity通信: Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL)这一节我不作过多描述,当我们想获取启动的Service实例时,我们可以用到bindService和onBindService方法,它们分别执行了Service中IBinder()和onUnbind()方法。 Service 启动方式: 一、context.startService() 二、context.bindService(); 使用Service之前必须在androidMainfest.xml 中注册 调用流程: 第一种: 启动:context.startService() ---> onCreate() ---> onStartCommand() 销毁:ontext.stopService() ---> onDestroy(); 如果Service还没运行,则Android会先调用onCreate()方法,然后再调用onStartCommand(); 如果Service已经运行了,则只调用onStartCommand(),所以一个Service的onStartCommand(),方法可能会调用多次。 第二种: 启动:context.bindService() ---> onCreate() --->onBind(); 销毁:onUnibind() ---> onDestroy() onBind() 将返回给客户端一个IBind接口实例,IBind允许客户端调用服务的方法,比如得到Service允许状态或者其他操作这个时候调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Service就会调用onUnibind() ---> onDesytoy()相应退出 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-01-19
讲完了????
|
|
返回顶楼 | |
发表时间:2012-01-20
这个标题太大,改成生命周期简述
|
|
返回顶楼 | |
发表时间:2012-01-29
好“详细”。。。
|
|
返回顶楼 | |
发表时间:2012-02-01
简直详细得我不敢看
|
|
返回顶楼 | |
发表时间:2012-04-17
哥们,这是详解吗?
|
|
返回顶楼 | |