Android中Service介绍
来源:互联网 发布:网络吞吐量指标 编辑:程序博客网 时间:2024/05/17 20:59
Service是运行在后台的Android组件,位于android.app包下。当应用程序不需要显示外在界面但是需要其在后台运行时,可以使用Service,如在后台完成的数据计算、后台音乐播放、资源下载等。Service是运行在后台的长生命周期的、没有UI的代码。
和Activity不一样的是,Service不能自运行,它需要通过某一个Activity或者其他Context对象来调用,如Context.startService()和Context.bindService()等。Service既可以运行在自己的进程中,也可以运行在其他应用程序进程的上下文(context)里面。其它的组件还可以绑定到一个Service上面,通过远程过程调用来调用它。
像Activity一样,Service也有自己的生命周期函数,一般需要通过重载下列函数来控制Service的生命周期:onCreate()、onStart()、onDestory()等。
Service的启动和停止大致有两种方法:
方法一:通过调用context.startService()来启动,它可以传递参数给Service。流程一般是依次调用onCreate()和onStart()方法启动Service(注:onStart()可被多次调用)。当Service需要停止时,一般是调用stopService()方法结束之,之后再调用onDestroy()方法销毁它。需要注意的是,通过startService()启动Service后,即使调用startService()的进程结束了,Service仍然还存在,直到有进程调用stopService()或者Service通过stopSelf()方法终止时才能结束。如果直接退出而没有调用stopService(),Service会一直在后台运行,这也是一般的音乐播放器在后台运行时的状态。
过程:context.startService()--onCreate()--onStart()--stopService()--onDestroy()。
方法二:通过调用context.bindService()方式来启动,流程一般是依次调用onCreate()和onBind()方法启动Service。当通过unbindService()方法结束Service时,会依次调用context.unbindService()和context.onDestroy()方法。通过bindService()方法,Service就和调用bindService()的进程同生共死了,就是说,当调用bindService()的进程结束后,其bindService()也要跟着被结束。这一点是和startService()不一样的地方。
过程:context.bindService()--onCreate()--onBind()--unbindService()--onDestroy()。
上述两种方式可以混合使用。比如说startService()后,可以再bindService(),但只有执行了stopService()或unbindservice()后,这个Service才会被结束。以音乐播放器为例,在后台的工作的Service通过context.startService()启动某个特定音乐播放,但在播放过程中如果用户需要暂停音乐播放,则可能通过context.bindService()获取服务链接和Service对象,进而通过调用Service的对象中的函数来暂停音乐播放并保存相关信息。
启动Service一般需要在AndroidMenifest.xml文件中注册这个Service,此时需要在AndroidManifest.xml中增加对Service的说明。<Service Android:enable=“true” Android:name = “.创建的Service名字”/>
如果在Service的onCreate()或者onStart()中做了一些比较耗时的动作,最好启动一个新线程来运行这个Service,以免其影响到主线程中的其他内容。
- Android中Service介绍
- 十二.Android中Service的初步介绍
- Android中Service类中onStartCommand返回值介绍
- Android Service介绍
- Android Service 介绍
- Android Service 介绍
- Android Service 介绍
- Android Service 介绍
- android service 介绍
- android service介绍
- 介绍 Android DropBoxManager Service
- 介绍 Android DropBoxManager Service
- Android Service介绍
- Android Service介绍
- Android Service介绍
- Android 01 Service 介绍
- android service 介绍
- Android Service介绍
- hadoop-0.20.0分布式部署
- 在C++中,为什么前自增操作生成左值,后自增操作生成右值?为什么有这样的区别? .
- 看的oracle数据库视频 记的一点笔记
- 【读书笔记】改变:问题形成和解决的原则
- 2013下半年 一些好的句子
- Android中Service介绍
- 黑马程序员--- 一个控制台应用程序,要求完成写列功能
- VERYARM
- java设计模式笔记
- 近年来学习的论坛和博客
- 响应式WEB界面框架比较-Bootstrap vs. Foundation vs. Skeleton
- sublime 安装"Package Control"插件
- 【Cocos2d-x游戏引擎开发笔记(26)】中文和自定义字体
- VMware_Workstation_6.0绿色汉化版的安装和使用