当前位置: 首页 > 知识库问答 >
问题:

有人能解释android中未绑定和绑定服务的区别吗

华旭
2023-03-14

谁能解释一下android中未绑定和绑定服务之间的区别,并解释一下意图服务

谢啦

共有3个答案

洪鸿博
2023-03-14

服务可以是绑定或未绑定(已启动)或两者兼而有之,这只是您为Service类的回调方法提供的实现问题。在这里查看所有四个回调方法

但为了区别对待,你来吧

通过调用startService()方法启动未绑定的服务
通过调用bindService()方法启动绑定服务
但是,在这两个调用中,系统在内部调用onStartCommand()方法

一旦启动unboundService,它将无限期运行,直到

  • 应用程序组件调用Stop Service()方法
  • 服务本身调用SelfStop()方法。

只要服务绑定到客户端,BoundService就会运行。当没有与服务绑定的活动客户端时,系统将销毁该服务

编写服务时,必须重写onBind()。如果未绑定服务,则返回null
BoundService,然后返回IBinder对象。

虽然未绑定的服务不返回Ibinder对象,但这并不意味着它不能与应用程序组件交互。有一些方法可以做到这一点,例如BroadCastRecencer或ResultRecencer

当您希望与服务进行双向通信时,应该将服务与活动绑定
例如,通过暂停、播放选项(Activtiy)在后台播放音乐

如果您只想让您的服务更新您的活动(服务),请使用未绑定或已启动的服务-

另一个例子

您已经编写了一些处理位置更改的服务
如果你想在移动10米时更新你的活动(使用未绑定服务)
如果要在单击“活动”中的某个按钮时查看当前位置的坐标。(使用绑定服务)。

曾苗宣
2023-03-14

有界服务被绑定到绑定它的活动,并且只有在有界活动处于活动状态时才会工作。而一个无限的服务将一直工作到完成,即使在活动被销毁之后也是如此。下面的链接中给出了表格差异,这对面试非常有用http://infobloggall.com/2014/04/15/bounded-service-in-android/

艾晋
2023-03-14

绑定服务

当应用程序组件通过调用bindService()绑定到服务时,服务被绑定。绑定服务提供了一个客户机-服务器接口,允许组件与服务交互、发送请求、获取结果,甚至通过进程间通信(IPC)跨进程执行这些操作。

当最后一个客户端与服务解除绑定时,系统将销毁该服务,除非该服务是由startService启动的

未绑定服务或已启动

当应用程序组件(如活动)通过调用startService()启动服务时,服务就会启动。一旦启动,服务可以无限期地在后台运行,即使启动它的组件已被销毁。

但是

关于Service类的大多数混淆实际上都围绕着它不是什么:

服务不是一个单独的进程。Service对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它与它所属的应用程序在同一个进程中运行。

服务不是线程。它本身并不是一种脱离主线程工作的方法(以避免应用程序不响应错误)。

这就是使用IntentService的地方。

IntentService是服务的一个子类,它使用工作线程

按需处理所有启动异步请求(表示为Intents),一次一个。客户端通过start Service(Intent)调用发送请求;该服务根据需要启动,使用工作线程依次处理每个Intent,并在它用完时自行停止。

希望有帮助:)

 类似资料:
  • 问题内容: 我之所以问这个问题,是因为对该答案的评论主题进行了讨论。我有90%的方法可以解决问题。 存在三种不同形式: 绑定方法 , 未绑定方法 和 函数 对象之间的区别是什么,所有这些都由f1描述?一个人怎么称呼这三个物体?它们如何相互转化?关于这些东西的文档很难理解。 问题答案: 一个 功能 是创建由声明,或通过。在Python 2下,当函数出现在语句主体中(或传递给类构造调用)时,它将转换为

  • 问题内容: 我对这些概念有些模糊,如果我完全在AngularJS和ReactJS中构建相同的ToDo应用程序,那么,什么使React ToDo使用单向数据绑定而不是AngularJS的双向数据绑定? 我了解React之类的作品 渲染(数据)—> UI。 这与Angular有何不同? 问题答案: 角度的 当角度设置数据绑定时,存在两个“观察者”(这是一种简化) 输入将以开始,然后更新为1000ms。

  • 本文向大家介绍静态绑定和动态绑定之间的区别,包括了静态绑定和动态绑定之间的区别的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解静态绑定和动态绑定之间的区别。 静态绑定 它在编译时解决。 它使用类和字段的类型。 它使用私有,最终和静态方法和变量。 示例:重载 动态绑定 在运行时解决。 虚方法使用此技术。 它使用对象来解决绑定。 示例:方法覆盖。

  • 问题内容: 有太多相关的名称:早期和晚期绑定,静态和动态调度,运行时与编译时多态等,我不知道它们之间的区别。 我找到了清楚的解释,但这是正确的吗?我将解释 JustinC : 绑定: 正在确定变量的类型(对象?)。如果它是在编译时完成的,则它的早期绑定。如果在运行时完成,则绑定晚。 调度: 确定哪个方法与方法调用匹配。静态调度是在编译时计算的方法,而动态调度是在运行时执行的。 绑定是否分别将原始变

  • 本文向大家介绍angular 数据绑定之[]和{{}}的区别,包括了angular 数据绑定之[]和{{}}的区别的使用技巧和注意事项,需要的朋友参考一下 问题描述 在学习angular时,在示例代码写到加载图片时,书中推荐使用单向数据绑定符号[]来绑定图片的路径,然后双花括号的写法是错的。 尝试 首先,按书中推荐的写法: 这里就省略了控制器中定义变量的代码。 然后又按书中说错误的方式进行尝试:

  • 绑定是否分别与原始值和对象匹配原始变量和引用变量? 编辑:请给我一些明确的参考资料,这样我就可以阅读更多关于这一点。