Service是什么?
Service 是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行(官方解释)。
Service有什么用?
可以做一些静默的工作,无需用户操作,常用的都有播放音乐,后台持续定位,较大的数据量计算等。
Service怎么用?
service是一个后台组件,启动它有两种方式:
1.使用context类的startService方法
2.使用contex类的bindService方法。
3.在activity或application中可以直接调用上面的两个方法,并启动service。
startService与bindService的区别:
1.生命周期不一样。
当startService时,service会依次调用oncreate,和onStartCommand方法。再次start这个service时,只会调用onStartCommand方法,oncreate方法只会调用一次。启动以后service就和启动它的组件没什么关系了。想要停止这个service运行的话,需要调用context的stopService方法。或者在service内部调用自己的stopSelf方法。
这个时候会调用service的onDestory方法。
当bindService时,service会依次调用oncreate,和onBind方法。再次bind,并不会有变化,只会bind一次。当使用bind这种方式启动的时候,service的什么周期和启动它的组件生命周期是一致的,当组件销毁时,service会执行onUnbind和onDestroy方法。销毁service的方法外部使用context的onUnbind方法,内部使用stopself方法。这时会依次调onUnbind方法,和onDestory方法。
2.存在时长不一样。
Service和IntentService的区别
intentService是service的子类。与service的区别是,service正常情况下在前ui线程中执行相关任务。而intentservice是在子线程中执行相关任务,当任务完成后会自己进行销毁。用完即毁,不要拖泥带水。所以执行的操作是耗时操作时推荐使用intentService。
网友评论