moh*_*han 27 android android-service
任何人都可以解释android中的未绑定和绑定服务之间的区别,并解释有意服务
谢谢
Spu*_*dow 61
当应用程序组件通过调用bindService()绑定到服务时绑定服务.绑定服务提供客户端 - 服务器接口,允许组件与服务交互,发送请求,获取结果,甚至跨进程间通信(IPC)进行交互.
当最后一个客户端从服务解除绑定时,系统会销毁该服务,除非该服务是由startService启动的
未绑定服务或已启动
当应用程序组件(如活动)通过调用startService()启动服务时,将启动该服务.一旦启动,服务可以无限期地在后台运行,即使启动它的组件被销毁.
但
关于Service类的大多数混淆实际上都围绕着它不是:
服务不是一个单独的过程.Service对象本身并不意味着它在自己的进程中运行; 除非另有说明,否则它与其所属的应用程序运行的过程相同.
服务不是一个线程.它本身不是从主线程开始工作的手段(以避免应用程序无响应错误).
这就是使用IntentService的地方.
IntentService是使用工作线程的Service的子类
按需处理所有启动异步请求(表示为Intents),一次一个.客户端通过startService(Intent)调用发送请求; 根据需要启动服务,使用工作线程依次处理每个Intent,并在工作失败时自行停止.
希望能帮助到你 :)
小智 11
有界服务受限于绑定它的活动,并且只有在有限活动存活之后才能工作.即使在活动被破坏之后,无限制的服务也将一直有效.下面的链接给出了一个表格差异,这对访谈非常有用 http://infobloggall.com/2014/04/15/bounded-service-in-android/
小智 7
当组件(如活动)调用startService()方法时,将启动未绑定的服务。当另一个组件(例如,客户端)调用bindService()方法时,将绑定服务。
Unbound服务可以通过调用stopSelf()方法来停止自身。在所有客户端取消绑定服务之前,无法停止“绑定”服务。
Unbound服务无限期在后台运行。Where As Bound服务不会无限期在后台运行。
Unbound服务通过stopService()方法停止。在绑定服务中,客户端可以通过调用unbindService()方法来取消绑定服务。
谢谢
服务可以是绑定的或未绑定的(启动的),也可以是两者兼而有之,这只是您提供给Service类的回调方法的实现问题。在这里查看所有四个回调方法
但是为了差异化,您可以
通过调用startService()
方法启动未绑定服务。
绑定服务通过调用bindService()
方法启动。
但是在两个调用中,系统内部都会调用onStartCommand()方法
一旦启动unboundService,它将无限期运行,直到
只要服务绑定到客户端,BoundService就会运行。当没有活动的客户端绑定该服务时,系统将销毁该服务
在编写服务时,您将必须重写onBind()。如果
Unbound Service,则返回null
BoundService,然后返回IBinder对象。
尽管未绑定的服务不会返回Ibinder对象,但这并不意味着它无法与应用程序组件进行交互。有多种方法可以做到这一点,例如BroadCastReceiver或ResultReceiver
如果要与服务进行双向通信,则应将服务与活动绑定。
例如。在后台播放带有暂停,播放选项(Activtiy <->服务)的音乐。
当您只希望服务更新您的活动(服务->活动)时,请使用未绑定或已启动的服务。
例如:计时器服务,它每秒更新一次活动。
另一个例子
您已经编写了一些处理位置更改的服务。
如果您想在移动10米时更新活动(使用无限制服务)。
如果您想在单击活动中的某些按钮时查看当前位置的坐标。(使用绑定的服务)。
归档时间: |
|
查看次数: |
22825 次 |
最近记录: |