有关service

来源:互联网 发布:linux telnet连接拒绝 编辑:程序博客网 时间:2024/05/16 11:04

service 是一个在后台处理长时间任务的Android组件,没有UI。
启动方式:startService和bindService
区别:
startService(startService()的目的是回调onStart()方法)只是启动Service,而与启动他的组件(如Activity) 和Service是没有关联的,只有当Service调用stopSelf或者其他组件调用stopService服务才会停止。
bindService启动Service( bindService()目的是回调onBind()方法),其他组件可以通过回调获取Service的代理对象和Service进行交互,这两方进行了绑定,当启动方销毁时,Service也会自动进行unBind操作,当发现所有绑定都进行了unBind时,Service才会被销毁。
两种启动方式Service的生命周期:
startService:
startService

bindService:
bindService:

Service中的onCreate回调函数是不可以做耗时的操作,原因:
Service的onCreat是在主线程中调用的,耗时操作会阻塞UI.

IntentService:IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推。而且,所有请求都在一个单线程中,不会阻塞应用程序的主线程(UI Thread),同一时间只处理一个请求。

0 0
原创粉丝点击