Activity 和 JobIntentService 生命周期

2024-04-06

我正在运行一个JobIntentService在后台执行任务。使用理由JobIntentService这样用户就可以在操作发生时最小化屏幕,即使 Android 操作系统破坏了该 ActivityJobIntentService仍将继续运行,如果用户回来,他可以更新结果。

但我有一个情况,假设用户自己关闭了应用程序,那么我想停止JobIntentService also.

有什么办法可以通知JobIntentService当用户自己关闭应用程序时。

任何帮助将不胜感激。

编辑:我尝试使用onTaskRemoved这是没有用的,我的测试设备不会调用它(我确信许多其他设备也不会调用它)。此外,当应用程序从最近的列表中删除时,该服务会自动停止,但当再次打开应用程序时,该服务会再次重新启动,这是我不想要的。


原因是你的Service当用户从最近的任务列表中滑动任务时,Android 会在用户从最近的任务列表中滑动任务时杀死托管应用程序的操作系统进程。 Android 将重新启动任何Service正在它刚刚杀死的操作系统进程中运行。

随着时间的推移,这种行为已经发生了变化,并且在不同版本的 Android 上也有所不同,而且一些制造商有自己的自定义 ROM,他们以不同的方式实现这一点。

您无法采取任何措施来确保您的Service不会被 Android 杀死并重新启动。您可以尝试一下,这可能会有所帮助:

把你的Service在单独的操作系统进程中。要执行此操作,请添加android:process=":remote" to the <service>清单中的标签。在某些版本的 Android 上,从最近任务列表中滑动任务只会杀死托管活动的操作系统进程。这可能会阻止 Android 杀死你的Service在这种情况下。

你也这么说onTaskRemoved()没有被调用并且你的ServiceAndroid 杀死后不会自动重新启动。这种情况发生在制造商试图积极节省电池电量的某些设备上。这在中国设备(小米、中兴等)上很常见,一些 LG、华为和联想设备也出现这种行为。在这些设备上有一个允许在后台运行的应用程序列表(也称为“受保护”应用程序)。您必须在这些设备上手动将您的应用添加到此列表(或告诉您的用户他们需要手动将您的应用添加到列表)。如果您的应用程序位于“受保护的应用程序”或“允许在后台运行的应用程序”列表中,那么 Android 现在可能会杀死您的应用程序Service如果用户从最近任务列表中滑动任务,或者确实杀死了该任务,则应该调用onTaskRemoved()并且它还应该自动重新启动Service立即地。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Activity 和 JobIntentService 生命周期 的相关文章

随机推荐

  • MultiAutoCompleteTextView 不显示结果

    我的活动中有以下代码 ParseQuery
  • Android:定时器/延迟替代方案

    我想让一个图像在 60 毫秒内可见 然后不可见 然后我想让另一个图像执行相同的操作 等等 我认为我没有正确使用计时器 因为当我运行该应用程序时 两个图像会同时打开 并且当我按下使用此功能的按钮时 两个图像不会消失 这是一些示例代码 time
  • Ionic / Leaflet - 无法获取 Tiles 404 Not Found(从缓存)

    我被一个非常奇怪的问题所困扰 我在用着leaflet http leafletjs com with 角度传单指令 https github com tombatossals angular leaflet directive 在之前的应用
  • 在 Jetty 7 中将 JSESSIONID cookie 设置为 httpOnly

    我们正在运行 grails 2 0 jetty 7 6 6 并且需要将 JSESSIONID cookie 设置为 httpOnly stackoverflow 上的所有答案似乎都涉及 Servlet 3 0 需要 jetty 8 或 to
  • 正则表达式匹配 3 到 4 位数字

    我正在学习正则表达式 我正在尝试找到这个字符串 day1otlk XXXX gif 其中 4 个 X 是 3 到 4 个随机数字 这就是我到目前为止所拥有的 我接近了吗 qr day1otlk d gif i 您可以指定 3 或 4 位数字
  • Quartz 2D 与 OpenGL ES 学习曲线

    我开发 iPhone 应用程序已有几个月了 我想知道您对 Quartz 与 OpenGL ES 1 x 或 2 0 学习曲线的看法 你可以说出你的观点 我的问题是 我是一名想成为游戏开发者的人 所以先用quartz开发然后再迁移是个好主意吗
  • 如何记录 ActiveResource 使用的 URL?

    Rails ActiveResource 很棒 除了一件事 据我所知 无法查看它在幕后使用的 URL 例如 假设我有一个名为 Issue 的 ActiveResource 用于 myIssues com issues xml 上的 Web
  • 使原始的 Angular 表单控件变脏[重复]

    这个问题在这里已经有答案了 Angular 4 中有一种反应式形式 一些控制应该在某个时刻以编程方式设置 this form formBuilder group foo this form controls foo setValue foo
  • getJSON 和 $.ajax 之间的区别

    从一开始我就想说我知道THIS https stackoverflow com questions 1076013 difference between getjson and ajax in jquery问题与我的标题相同 但该用户提出了
  • 嵌套列表中特定项目的求和

    我有一个数据文件 例如 1 123 something else 2 234 something else 3 500 something else 1 891 something else 2 234 something else 3 5
  • CLDC 1.0 / MIDP 2.0 应用中的三角学

    如何在 CLDC 1 0 MIDP 2 0 应用程序中使用三角函数 我需要标准数学库中的 sin cos tan asin acos atan atan2 函数 Thanks 蚊子知道 http forums sun com thread
  • 在 IE11 中按计算机名称访问站点时显示“对象不支持属性或方法‘querySelector’”

    我在防火墙内的 Windows Server 2012 R2 主机上将 Angularjs 站点部署到 IIS 当我 RDP 进入服务器并从那里导航到 http localhost Foo 在 IE11 中 一切都按照人们的预期运行 我的页
  • 当我尝试运行 npx react-native run-android 时,任务:app:mergeDebugAssets 失败

    我正在使用 vscode 和物理 Android 设备在 React Native 上开发 Android 应用程序 在尝试使用 npx React Native Run Android 进行构建时 它不断显示以下错误 Task app m
  • 渠道有什么用?

    在查看一些 Go 代码时 我发现了以下内容 ch make chan int 我在在线教程中查找了 Go Channels 的工作原理 https tour golang org concurrency 2 https tour golan
  • jquery回调

    我需要能够在准备好后对函数的执行进行回调 jQuery document ready function execute function 1 only when finish do function 2 这样做的好方法是什么 加载文档后执行
  • Oracle InvalidOperationException - 尝试从表中选择时

    我有一个参数表 其中有一个参数来说明我的程序是否应该运行 我试图获取该值来检查函数 这是函数 private static bool shouldRun OracleCommand c conn CreateCommand c Comman
  • 如何在单个查询中使用不同参数执行多个联接

    我有两个表 问题 question id 和question exclusion question type question sub type question id 如果我指定 Question type 和 Question sub
  • 如何以编程方式调用视图控制器?

    我已经查看了我能找到的所有关于此问题的教程 但仍然没有答案 我需要从代码中调用另一个视图 我在用UIStoryboards 我通过控制拖动多次改变了视图UIButtons 但现在它必须来自代码 如果这是用户第一次打开应用程序 我尝试从主菜单
  • 加速 matplotlib 散点图绘制

    我正在尝试制作一个交互式程序 主要使用 matplotlib 来制作相当多的点 10k 100k 左右 的散点图 现在它可以工作 但是更改需要很长时间才能呈现 少量的点还可以 但是一旦数量增加 事情就会很快变得令人沮丧 所以 我正在研究加速
  • Activity 和 JobIntentService 生命周期

    我正在运行一个JobIntentService在后台执行任务 使用理由JobIntentService这样用户就可以在操作发生时最小化屏幕 即使 Android 操作系统破坏了该 ActivityJobIntentService仍将继续运行