Android Service
一个Service可以以以下两种形式存在:
开启服务: 不可以调用服务里面的方法.
如果调用者activity退出了, 服务还会长期的在后台运行
绑定服务: 间接调用服务里面的方法.
如果调用者activity被销毁了, 服务也会跟着销毁
(不求同时生,但求同时挂)
创建 Service 实现Service
需要重载的重要方法
onStartCommand()
Android系统在有其它应用程序组件使用startService()请求启动Service时调用。一旦这个方法被调用,Service处于“Started”状态并可以一直运行下去。如果你实现了这个方法,你需要在Service任务完成时调用stopSelf()或是stopService()来终止服务。如果你只支持“绑定”模式的服务,你可以不实现这个方法。
· onBind()
Android系统中有其他应用程序组件使用bindService()来绑定你的服务时调用。在你实现这个方法时,你需要提供一个IBinder接口以支持客户端和服务之间通信。你必须实现这个方法,如果你不打算支持“绑定”,返回Null即可。
· onCreate()
Android系统中创建Service实例时调用,一般在这里初始化一些只需单次设置的过程(在onStartCommand和onBind()之前调用),如果你的Service已在运行状态,这个方法不会被调用。
· onDestroy()
Android系统中Service不再需要,需要销毁前调用。在你的实现中你需要释放一些诸如线程,注册过的listener,receiver等,这是Service被调用的最后一个方法。
如果一个Service是由startService()启动的(这时 onStartCommand()将被调用),这个Service将一直运行直到调用stopSelf()或其它应用部件调用stopService()为止。
如果一个部件调用bindService()创建一个Service(此时onStartCommand()不会调用),这个Service运行的时间和绑定它的组件一样长。一旦其他组件解除绑定,系统将销毁这个Service。
在Manifest中申明Service
和Activity一样,你必须在Manifest文件中申明应用中使用到的Service。为了声明一个Service,你需要定义<application>的子元素<service>,比如:
1 2 3 4 5 6 | <service android:name=".RemoteService" > <intent-filter> <action android:name="com.itheima.remoteservice" > </action> </intent-filter> </service> |
浙公网安备 33010602011771号