你应该创建一个继承于Service的类来定义一个特定的Service组件。你可能需要重写一些回调函数(onCreate,onDestroy)来管理Service的生命周期或者根据需要重写相应的回调函数(onStartCommand,onBind)来提供给外部应用程序使用该Service的Interfaces。
如果通过Context.startService()方法来启动一个Service组件,则该Service组件的onStartCommand的方法将会被调用,一个被启动的Service可以通过调用Context.stopService()或者Service.stopSelf()方法来停止当前服务。
应用程序组件还可以通过Context.bindService()方法来绑定一个Service组件(onBind方法将会被android调用,onStartCommand方法则会被跳过)。只要还有其他组件绑定了当前的Service组件,则Service处于运行状态。
在启动或绑定一个自定义的Service组件之前需要在AndroidManifest.xml中对该Service组件进行声明(在<application>标签中嵌入一个<service>子元素).在声明一个<service>时必须使用android:name属性来指定该Service的类名。
与Activity一样,Service也可以通过在AndroidManifest.xml定义<intent-filter>来允许应用程序中的其它组件采用隐式的Intent启动或绑定一个Service组件。
如果你想让外部的应用程序禁止访问当前的Servcie,那么应该在<service>元素中不定义任何<intent-filter>,或者通过设置<service>元素的android:exported属性为false来杜绝外部应用程序使用(即使你已经定一个或多个<intent-filter>元素)。