当前位置: 首页 > 面试题库 >

START_STICKY和START_NOT_STICKY

王英彦
2023-03-14
问题内容

START_STICKY和START_NOT_STICKY在android中实现服务之间有什么区别?任何人都可以指出一些标准示例。


问题答案:

这两个代码仅在手机内存不足并在执行结束之前终止服务时才相关。 START_STICKY告诉操作系统在具有足够的内存后重新创建服务,onStartCommand()然后以空意图再次调用。TART_NOT_STICKY告诉操作系统不要再重新创建服务。还有第三条代码START_REDELIVER_INTENT告诉操作系统重新创建服务并重新发送相同的意图onStartCommand()

戴安娜·哈克伯恩(Dianne Hackborn)的这篇文章比官方文档更好地解释了其背景。

来源:http : //android-developers.blogspot.com.au/2010/02/service-api-changes-starting-with.html

这里的关键部分是该函数返回的新结果代码,告诉系统如果在运行过​​程中其进程被杀死,该服务应该如何处理:

START_STICKY与以前的行为基本相同,在该行为中,服务保持“启动”状态,稍后将由系统重新启动。与该平台先前版本的唯一区别在于,如果由于其进程被终止而重新启动该平台,则将在服务的下一个实例中使用空Intent调用onStartCommand()而不是根本不调用它。使用此模式的服务应始终检查这种情况并进行适当处理。

START_NOT_STICKY说,从onStartCreated()返回后,如果进程被杀死而没有剩余的启动命令要传递,则该服务将停止而不是重新启动。对于仅在执行发送给它们的命令时才运行的服务,这更有意义。例如,可以每15分钟从警报启动一项服务以轮询某些网络状态。如果在执行此操作时将其杀死,最好只是将其停止并在下一次警报响起时启动。

START_REDELIVER_INTENT类似于START_NOT_STICKY,除了服务的进程在为给定意图调用stopSelf()之前被杀死之前,该意图将重新交付给它,直到完成为止(除非经过多次尝试仍无法完成,此时系统会放弃)。这对于正在接收要执行的工作命令的服务非常有用,并且要确保它们最终能够为发送的每个命令完成工作。



 类似资料:
  • 问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览

  • 什么区别以及如何正确重写代码?

  • 我试图理解为什么下面两个代码块会产生不同的结果。 代码块1按预期工作,并返回从数据库中查找的提供程序的数组。另一方面,代码块2返回函数数组。在理解promissione.all()和async/await时,我觉得缺少了一些简单的东西。 代码块的差异如下: > 块1:创建许诺函数数组,然后使用map运算符将其包装在异步函数中。 块2:许诺函数的数组被创建为异步函数。因此,不调用map运算符。 如果

  • 问题内容: 我才刚刚开始研究SQL。 我有一个SQL Server 2008r2数据库,它将返回两个字段DocDate和InvValue。我需要将InvValues汇总为今天的MTD和YTD,所以看起来像 我已经做了大量的Google搜寻,并且可以使用SUM&DATEPART进行一项或多项,但是我坚持尝试两者兼而有之。 有人可以给我一些伪代码,以帮助我进一步谷歌。 谢谢@戈登·利诺夫(Gordon

  • 这个示例代码来自一本Java书籍,从墙上的99瓶啤酒到没有啤酒打印出这首歌。问题是,当墙上是1瓶啤酒时,它仍然写着瓶子。我试图通过在末尾添加部分来解决这个问题。但是,它仍然显示1瓶啤酒在墙上,我瓶啤酒在墙上。 我不知道该改变什么来解决这个问题。是否创建另一个while部分? 如果你能给他们一个提示,这样我就可以自己解决它,那也很酷!因为我知道我的实际歌曲输出是在第一个if部分,但我不知道我应该在哪

  • 原文地址:https://cesiumjs.org/tutorials/cesium-and-webpack/ Cesium 和 Webpack Webpack是非常强大非常流行的JavaScript 模块打包工具。它可以让开发人员以一种简单直观的 require 方式去加载各种页面需要的文件,极大的方便了开源人员对代码和资源文件进行结构化设计。当编译的时候,它会跟踪代码依赖性,把所有的模型打包到