bindserviceservice在手机程序中起什么作用

bindservice  时间:2021-07-01  阅读:()

Andord程序关闭如何让service继续运行

你可以先 startService() 然后再 bindService() 。

当你不需要绑定的时候就执行 unbindService() 方法,执行这个方法只会触发 Service 的 onUnbind() 而不会把这个 Service 销毁。

Service的生命周期是怎样的?

当在activity里面调用了Context.startService后,系统会得到这个service,然后调用onStartCommand()方法,此时service就是运行起来,直到Service()或Self()方法被调用。

注意,多次调用startService并不会起很多个服务,它好像只有一个实例。

不管调用几次startService,要停止服务,只需要调用Service或Self一次就行了。

也可以调用Context.bindService来得到一人与service的连接,其实就是得到一个IBinder接口的对象,通过这种方式启动服务的话,是不是会调用onStartCommand()方法了。

一个服务可以启动,也可以绑定一个连接到它上面,这种情况下,系统会使服务一直运行,只要它被启动了,或者至少有一个到它的连接。

如果一个服务被结束的话,它会调用onDestroy()方法,那么所有的清理工作都应当在这个方法里面进行。

startService 和 bindService的区别

展开全部 1. 生命周期: startService()方式启动,Service是通过接受Intent并且会经历onCreate()和onStart()。

当用户在发出 意图使之销毁时会经历onDestroy(),而bindService()方式启动,与Activity绑定的时候,会经历onCreate()和 onBind(),而当Activity被销毁的时候,Service会先调用onUnbind()然后是onDestroy()。

2. 控制方式: 前者的控制方式需要使用固定的方法,对Service进行单一的操作。

而后者由于与Activity绑定,不用考虑其生命周期问题,并且从发送 Intent的被动操作,变为可以主动对Service对象进行操作,我们甚至可以建立一个Handler类,对Service进行相关的操作。

大大加强 了Service的灵活性、可操作性。

总结:对于简单的应用startService()启动方式能带来更少的代码,简单的操作。

对于复杂的应用bindService()方式,虽然带来的更多的编码,但同时也带来了更好的可操作性,使其使用起来更像Activity。

******************************************************************************************************** Service的生命周期方法比Activity少一些,只有onCreate, onStart, onDestroy 我们有两种方式启动一个Service,他们对Service生命周期的影响是不一样的。

1 通过startService Service会经历 onCreate --> onStart Service的时候直接onDestroy 如果是 调用者 直接退出而没有调用Service的话,Service会一直在后台运行。

下次调用者再起来仍然可以Service。

2 通过bindService Service只会运行onCreate, 这个时候 调用者和Service绑定在一起 调用者退出了,Srevice就会调用onUnbind-->onDestroyed 所谓绑定在一起就共存亡了。

注意:Service的onCreate的方法只会被调用一次, 就是你无论多少次的startService又 bindService,Service只被创建一次。

如果先是bind了,那么start的时候就直接运行Service的onStart方法, 如果先是start,那么bind的时候就直接运行onBind方法。

如果你先bind上了,就不掉了, 只能先UnbindService, 再Service,所以是先start还是先bind行为是有区别的。

Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。

服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。

这两个方法都可以启动Service,但是它们的使用场合有所不同。

使用startService()方法启用服务,调用者与服务之间没有关连, 即使调用者退出了,服务仍然运行。

使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。

如果打算采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法, 接着调用onStart()方法。

如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务, 但会导致多次调用onStart()方法。

采用startService()方法启动的服务,只能调用Service()方法结束服务,服务结束时会调用onDestroy()方法。

如果打算采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法, 接着调用onBind()方法。

这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法, 接着调用onDestroy()方法。

如果调用bindService()方法前服务已经被绑定, 多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。

如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法.

请教如何用activty绑定service

自己翻了翻文档,搞定了,主要步骤是建立一个service并在其onBind()方法中返回一个Binder继承类对象,然后在你所用的activity中调用bindService(),其中在activity要覆写ServiceConnection中的onServiceConnected()和onServiceDisconnected()方法,尤其要注意第三个参数,不要用默认的0,不然会绑定但不调用onServiceConnected()方法的

service和thread的区别,何时用service,何时用thread

1). Thread:Thread 是程序执行的最小单元,它是分配CPU的基本单位。

可以用 Thread 来执行一些异步的操作。

2). Service:Service 是android的一种机制,当它运行的时候如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。

如:onCreate,onStart 这些函数在被系统调用的时候都是在主进程的 main 线程上运行的。

如果是Remote Service,那么对应的 Service 则是运行在独立进程的 main 线程上。

因此请不要把 Service 理解成线程,它跟线程半毛钱的关系都没有! 既然这样,那么我们为什么要用 Service 呢?其实这跟 android 的系统机制有关,我们先拿 Thread 来说。

Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止 Thread 或者 Thread 里的 run 方法没有执行完毕的话,Thread 也会一直执行。

因此这里会出现一个问题:当 Activity 被 finish 之后,你不再持有该 Thread 的引用。

另一方面,你没有办法在不同的 Activity 中对同一 Thread 进行控制。

举个例子:如果你的 Thread 需要不停地隔一段时间就要连接服务器做某种同步的话,该 Thread 需要在 Activity 没有start的时候也在运行。

这个时候当你 start 一个 Activity 就没有办法在该 Activity 里面控制之前创建的 Thread。

因此你便需要创建并启动一个 Service ,在 Service 里面创建、运行并控制该 Thread,这样便解决了该问题(因为任何 Activity 都可以控制同一 Service,而系统也只会创建一个对应 Service 的实例)。

因此你可以把 Service 想象成一种消息服务,而你可以在任何有 Context 的地方调用 Context.startService、Service、 Context.bindService,Context.unbindService,来控制它,你也可以在 Service 里注册 BroadcastReceiver,在其他地方通过发送 broadcast 来控制它,当然这些都是 Thread 做不到的。

service在手机程序中起什么作用

1.service是安卓的系统服务,总之是整个系统运行的管理者。

但如果你的情况不一样,可能还有第二种,请看2 2.手机系统里总出现的SystemService流氓软件通过后门自动下载安装大量并非你自己安装的应用,SystemService反复删除N多次但很快又会出现,即便回复出厂设置和刷机也会再次出现。

CloudCone中国新年特别套餐,洛杉矶1G内存VPS年付13.5美元起

CloudCone针对中国农历新年推出了几款特别套餐, 其中2019年前注册的用户可以以13.5美元/年的价格购买一款1G内存特价套餐,以及另外提供了两款不限制注册时间的用户可购买年付套餐。CloudCone是Quadcone旗下成立于2017年的子品牌,提供VPS及独立服务器租用,也是较早提供按小时计费VPS的商家之一,支持使用PayPal或者支付宝等付款方式。下面列出几款特别套餐配置信息。CP...

硅云香港CN2+BGP云主机仅188元/年起(香港云服务器专区)

硅云怎么样?硅云是一家专业的云服务商,硅云的主营产品包括域名和服务器,其中香港云服务器、香港云虚拟主机是非常受欢迎的产品。硅云香港可用区接入了中国电信CN2 GIA、中国联通直连、中国移动直连、HGC、NTT、COGENT、PCCW在内的数十家优质的全球顶级运营商,是为数不多的多线香港云服务商之一。目前,硅云香港云服务器,CN2+BGP线路,1核1G香港云主机仅188元/年起,域名无需备案,支持个...

美国服务器20G防御 50G防御 688元CN2回国

全球领先的IDC服务商华纳云“美国服务器”正式发售啦~~~~此次上线的美国服务器包含美国云服务器、美国服务器、美国高防服务器以及美国高防云服务器。针对此次美国服务器新品上线,华纳云也推出了史无前例的超低活动力度。美国云服务器低至3折,1核1G5M低至24元/月,20G DDos防御的美国服务器低至688元/月,年付再送2个月,两年送4个月,三年送6个月,且永久续费同价,更多款高性价比配置供您选择。...

bindservice为你推荐
ipv6无网络访问权限WIN7本地连接,IPV4和IPV6无网络访问权限怎么解决flash控件手机怎么安装flash插件在线课堂老师怎么在线授课?weakhashmapMap接口,HashMap和HashTable的相同点和不同点分别是什么?weakhashmapJava中isEmpty方法如何使用?拓扑关系简述空间数据的拓扑关系及其对GIS数据处理和空间分析有何重要意义?spawningvc出现error spawning c1.exe怎么解决?有b吗有什么好看的b级片相似图片搜索如何输入图片并且搜出最相似的图片?medias请帮我详细解释一下 chronological order和in medias res
100m虚拟主机 申请域名 郑州服务器租用 上海服务器租用 俄罗斯vps 小米数据库 全站静态化 softbank邮箱 免费测手机号 hkt 爱奇艺会员免费试用 安徽双线服务器 免费asp空间申请 php服务器 国外代理服务器 网站防护 winds 免费网站加速 卡巴斯基官方下载 海尔t68驱动 更多