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多次但很快又会出现,即便回复出厂设置和刷机也会再次出现。

日本CN2独立物理服务器 E3 1230 16G 20M 500元/月 提速啦

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

Boomer.host:$4.95/年-512MB/5GB/500GB/德克萨斯州(休斯顿)

部落曾经在去年分享过一次Boomer.host的信息,商家自述始于2018年,提供基于OpenVZ架构的VPS主机,配置不高价格较低。最近,主机商又在LET发了几款特价年付主机促销,最低每年仅4.95美元起,有独立IPv4+IPv6,开设在德克萨斯州休斯顿机房。下面列出几款VPS主机配置信息。CPU:1core内存:512MB硬盘:5G SSD流量:500GB/500Mbps架构:KVMIP/面板...

酷锐云香港(19元/月) ,美国1核2G 19元/月,日本独立物理机,

酷锐云是一家2019年开业的国人主机商家,商家为企业运营,主要销售主VPS服务器,提供挂机宝和云服务器,机房有美国CERA、中国香港安畅和电信,CERA为CN2 GIA线路,提供单机10G+天机盾防御,提供美国原生IP,支持媒体流解锁,商家的套餐价格非常美丽,CERA机房月付20元起,香港安畅机房10M带宽月付25元,有需要的朋友可以入手试试。酷锐云自开业以来一直有着良好的产品稳定性及服务态度,支...

bindservice为你推荐
有道云笔记网页版有道云笔记怎么保存网页1u1U的 定义settimervc++6.0 settimer函数是怎么用的啊,能给个例子在讲解一下行么知识库管理系统销售易CRM知识库,这是干什么用的?郭凡生慧聪网公司怎么样郭凡生慧聪的董事长是谁?跟马云比,怎么样?调度系统生产调度系统rownumbersql server 2005中row_number怎么用flowplayer如何编译flowplayer源码spawning在c语言编译时出现Error spawning cl.exe,是怎么回事?
哈尔滨服务器租用 瓦工 香港加速器 koss 牛人与腾讯客服对话 元旦促销 申请个人网站 免费防火墙 免费高速空间 美国网站服务器 爱奇艺vip免费领取 新世界服务器 smtp虚拟服务器 沈阳主机托管 vul 新加坡空间 php服务器 申请免费空间 实惠 此网页包含的内容将不使用安全的https 更多