在上一节我们看到,创建服务时自动创建了onBind(Intent intent)方法,那么还有其他什么方法需要实现呢?
在Android Studio中,在MyService的代码区单击鼠标右键,选择菜单中Generate命令,如图4-7所示。
图4-7 MyService生成函数菜单命令
弹出的菜单窗口如图4-8所示,选择Override Methods选项。
图4-8 选择方法种类
弹出的窗口如图4-9所示,显示了需要覆盖的方法。在这些方法中我们要选择哪些方法呢?先看Service的生命周期,如图4-10所示。
图4-9 选择方法
图4-10 Service的生命周期
从图中可以看出,实现Service的类应该实现以下方法。
(1)onCreate()方法,当第一次启动Service时,先调用这个方法。
(2)onStartComman()方法或者onBind()方法。
(3)如果使用onBind()方法,还需实现onUnbind()方法。要注意的是,onBind()和onUnbind()方法应成对出现。(www.xing528.com)
(4)onDestroy()方法,当停止Service时,应执行onDestroy()方法。
启动Service有如下两种方式。
(1)startService():该方法启动Service,访问者和Service之间没有关联,一旦启动,即使访问者退出,Service依然运行。使用这种方法的启动顺序为onCreate()->onStartCom-mand()->onDestory(),如果服务已经开启,不会重复执行onCreate(),而是会调用on-StartCommand(),服务停止的时候调用onDestory(),服务只会被停止一次。
(2)bindService():该方法启动Service,访问者和Service绑定在一起,一旦访问者退出,Service随即退出。使用这种方式启动的Service的生命周期为onCreate()--->onBind()--->onunbind()--->onDestory()。
Service和Actvity都是从Context里面派生出来的,因此都可以直接调用getResource()、getContentResolver()等方法。
Service的方法调用总结如下。
(1)startService的启动顺序
OnCreate()->onStartCommand()->onDestroy
(2)bindtService的启动顺序
OnCreate()->onBind()->onServiceconnection->onUnbind()->onDestroy()
(3)两者混合使用
可以先startService后bindtService。
OnCreate()->onStartCommand()->onBind()->onServiceconnection->onUnbind()->onDestroy()
也可以先bindtService后startService。
OnCreate()->onBind()->onServiceconnection->onStartCommand()->onUnbind()->onDestroy()
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。