Android四大组件之Service组件

Service是Android四大组件中与Activity最相似的组件,它们都可以代表可执行的程序,Service与Activity的区别在于:Service一直在后台运行,它没有用户界面,所以绝不会到前台来。一旦Service被启动起来之后,它就与Activity一样了,它完全具有自己的生命周期

关于程序中Activity与Service的选择标准是:如果某个程序组件需要在运行时向用户呈现某种界面,或者该程序需要与用户交互,就需要使用Activity,否则就应该考虑使用Service了。Service组件也是可执行的程序,它也有自己的生命周期。创建、配置Service与创建、配置Activity的过程基本相似。



1.1 创建、配置Service

1. 定义一个继承Service的子类

2. 在AndroidManifest.xml 文件中配置该Service

Service和Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources()、getContentResolver()等方法。Service中也定义了一系列生命周期方法,如下:

IBinder onBind(Intent intent): 该方法是Service子类必须实现的方法。该方法返回一个IBinder对象,应用程序可通过该对象与Service组件通信。

void onCreate(): 在该Service第一次被创建后将立即回调该方法。

void onDestroy(): 在该Service被关闭之前将会回调该方法。

void onStartCommand(Intent intent, int flags, int startId): 该方法的早期版本是void onStart(Intent intent, int startId),每次客户端调用startService(Intent)方法启动该Service时都会回调该方法。

boolean onUnbind(Intent intent):当该Service上绑定的所有客户端断开连接时将会回调该方法。


定义了上面的Service之后,接下来需要在AndroidManifest.xml文件中配置该Service,配置Service使用<service.../>元素。 与配置Activity相似的是,配置Service时也可为<service.../>元素配置<intent-filter.../>子元素,用于说明该Service可被哪些Intent启动。<service android:name=".FirstService"></service>,无须指定android:label属性,因为Service没有界面,总是位于后台运行,为该Service指定标签没有太大的意义。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容