Android 服务被杀死

2024-03-04

我有一个服务与我的应用程序在同一进程中运行。

有时,Android 操作系统决定终止我的服务(可能是由于内存不足)。

我的问题是:我的应用程序是否会与服务一起被杀死?或者它到底是如何工作的?

Thanks!


首先请务必阅读:http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle

关键在于,在 Android 上,进程只是代码的容器——或者具体来说是一个或多个组件(活动、服务、接收者、提供者)。默认情况下,.apk 中的所有组件都有自己的专用进程,它们都一起运行。这几乎总是您想要的。

当用户直接与该进程的某个组件(即活动)交互时,Android 会尽力保持该进程运行,除非在特殊情况下,否则您不会看到它被杀死。

当用户不再直接与流程交互时,相对于参考文档中所述的其他流程,它就变得可消耗。也就是说,空进程(没有有趣的组件)将在持有用户一直在使用的活动的进程之前被杀死,而空进程将在正在运行的服务的进程之前被杀死。因此,拥有一个正在运行的服务往往会以牺牲其他进程为代价来保留您的进程。

与此同时,我们需要妥善处理越来越多的应用程序让服务无限期地运行,并且经常出现内存泄漏。因此,如果服务运行的时间越来越长,Android 将越来越不努力地保持其进程的运行。实际上,这意味着将其移至后台存储桶,直到内存不足杀手将其取出。之后,如果服务仍想运行,则会创建一个新进程供其重新启动。

结果是,对于长时间运行的正常服务,其进程在一段时间后被终止是预期的行为。这不需要停止服务;想要继续运行的服务会这样做,它只需要在新进程中实例化即可。

当然,只要用户与进程中的活动进行交互,该进程就不会被终止,因为这会将其拉到前台类别,无论其中的任何服务发生什么情况。

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

Android 服务被杀死 的相关文章

  • 不小心删除了Android布局文件

    我不小心从我的 Android 项目中删除了一个布局文件 有什么办法可以拿回来吗 自从做完之后我就再也没碰过 而且我在其他地方没有该文件的副本 如果您的 bin 文件夹中有该 apk 那么您很幸运 使用apktool https code
  • Android 日历视图字体大小

    我正在使用 Xamarin 构建 Android 应用程序 这是我的第一个应用程序 我有一个CalendarView我需要更改当天的字体大小和样式 我尝试了下面的代码 字体颜色改变了 但尺寸太小了 最低 API 级别为 11 目标 API
  • 如何在 AndroidEnvironment 构建文件的环境变量中指定下载目录的路径

    使用 Visual Studio 2022 17 2 0 Preview 1 0 我目前正在尝试创建一个 MAUI 应用程序 该应用程序已经在 Windows 上运行良好 也可以在 Android 下运行 该应用程序使用一个库 SaxonC
  • 工具栏下方的白条

    所以我有一个带有工具栏的应用程序 工具栏下方出现一个白条 最后的屏幕截图 我不希望那个栏在那里我尝试添加 maxHeight 以查看它是否有效 但没有运气 这是我的样式和 v21 style xml style
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • 在 Android 中不断更新新的 JSON

    我有不断变化的 JSON 我需要在 android 中不断更新更改 我该怎么做 我的Android代码是 r getImage JSONObject data new JSONObject r String a data getString
  • Android - 同一行中的两个按钮填充整个宽度

    我在定义相对布局时遇到了一些问题 我有一个带有滚动的列表视图 并且两个按钮始终在列表视图的底部可见 我只是希望我的两个按钮有 50 的宽度 填充该线 这是我的代码
  • android studio 中 xml 文件的设计预览无法“打开”

    我在制作一个 Android 项目时遇到了一个问题 更新 android studio 后 我的 xml 文件之一设计预览将无法打开 我收到 2 个错误 我已经寻找了解决方案 并且已经尝试了很多我在网上找到的东西 但都没有改变这种情况 第一
  • 为什么线性布局 maxHeight 不起作用?

    这是我的布局 我在线性布局上设置了最大和最小高度 但最大高度似乎不起作用 事实上如果TextView R id testo有很多文本 不会被修剪 如果我设置固定高度 则不会发生这种情况 但我不想设置固定高度 以便在选择溢出屏幕模式时正确调整
  • 围绕右下角对齐图像

    我正在使用相对布局将一个较小的图像叠加在较大的图像之上 我希望较小图像的右下角与较大图像的 B R 角重合 我在布局 XML 中使用边距参数 指定倾斜测量 但这似乎不适用于所有设备和分辨率 在某些情况下 小图像会从边框移动 4 5 像素 是
  • 为什么我无法在 Android 上从串口打开/写入?

    我编写了一个 Android 应用程序 它在 Android 4 4 Kitkat 设备上的自定义内核上运行 该设备使用 Android 串行端口 API https code google com p android serialport
  • Android 11 - 访问我的应用程序 Android/Data 文件夹中的文件

    由于某种原因 我真的很挣扎 希望有人能帮助我指明正确的方向 我的目标是 Android 11 API 30 这似乎是所有问题的根源 降低目标可能对我有用 但谷歌似乎最终会迫使我走上这条路 所以我不妨弄清楚这一点 我的应用程序通常会按照标准写
  • android中textview截断一个字母

    这是我的 Android 设备的屏幕截图 文字是 asd 然而 d 被稍微切断了 这是相关视图
  • 如何展开和折叠列表视图中的项目

    我对安卓还很陌生 我想实现一个列表视图 它包含一些列表项 当单击它们时 它们应该展开以显示更多信息 但我找不到办法做到这一点 这是我的activity main xml
  • 为什么我在模拟器中看不到视频?

    我见过几个与此类似的问题 但我想确定一下 我无法在模拟器上运行视频 是否一致 有人在模拟器上成功运行视频吗 以下是我使用的代码 import android app Activity import android net Uri impor
  • 如何在Android中将外部jar文件包含到aar文件中

    我想开发一个解决方案 允许我在 Android 项目的 aar 文件中生成的 SDK 中使用外部 jar 库 我有什么输入 SDK de xx sdk xxx android v1 0 0 外部库 libs xxxx v1 0 0 我在调查
  • 使用 Android API 发布推文

    我一直在寻找一种使用 Android 应用程序发布推文的方法 但我发现的所有方法都不起作用 我不得不承认 Twitter 的 API 并不是那么容易理解 但是我的代码并不长 而且我看不出我的错误在哪里 这是我的代码 public class
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto
  • Android 数据库(SQLite)从空表返回非空游标

    我使用 SQLite 数据库浏览器验证该表不包含任何行 我单步执行查询生成器代码来获取生成的查询 并在 SQLite 数据库浏览器中运行该查询 查询返回零行 但是 Android 的 SQLiteQueryBuilder query 方法返
  • 如何在android上的manageQuery中添加限制子句

    Android 的 API 通过 SQLite 提供了一种干净的机制来查询联系人列表 但是 我不确定如何限制结果 Cursor cur Activity mCtx managedQuery People CONTENT URI column

随机推荐

  • 如何拆分我的代码的解决方案?

    当您向我的代码提出问题时 它会告诉您您的问题 但我无法更改它 因此它有多种解决方案 它总是为所有不同的问题提供相同的解决方案 我要问的是如何为正确的问题提供正确的解决方案 而不是所有问题都只导致一个解决方案 其中显示 print 您问题的解
  • 在angularjs中使用debounce延迟代码

    我必须在 AngularJS 中编写电子邮件验证功能 当用户使用电子邮件 ID 完成编辑后 我想在 2 秒后发出发布请求 AngularJS 中有没有为此预先定义的方法 fiddle http jsfiddle net Qdk5M 1944
  • 将句子每行一个单词分开

    是否可以使用 CSS 将句子分成每行一个单词 Input div Hello world foo bar div 渲染输出 Hello world foo bar 将宽度设置为例如1px是不希望的 你必须使用display table ca
  • 对于导航堆栈的根视图控制器,isMovingToParentViewController 总是返回 FALSE?

    确定导航堆栈的根视图 顶级 控制器是由于最初呈现还是未被发现而出现的正确方法是什么 iOS 文档建议在 viewWill DidAppear 中使用 isMovingToParentViewController 来做出决定 这适用于推送到堆
  • Django-rest-framework 与 django OAuth 2.0 给出身份验证错误

    我已将 django rest framework 与 django oauth toolkit 集成 它给了我 detail Authentication credentials were not provided 使用未经身份验证的 A
  • AspectJ EDT-Checker 代码问题

    我目前正在使用 Alexander Potochkin 的 AspectJEDT 检查器代码 http weblogs java net blog alexfromsun archive 2006 02 debugging swing ht
  • 在没有 GUI 的服务器上运行 Smalltalk?

    我有一个相当明显的问题 我想在生产服务器上运行 Smalltalk 而不使用图形界面 VW 或 Pharo 甚至 Squeak 可能实现这一点吗 我有一个没有 X 的 VPS 托管 并且希望在 Smalltalk 上运行一些网站 同时使用成
  • emberjs 如何禁用 Ember.Select?

    我有一个与这个问题类似的问题 Emberjs 禁用和启用 TextField https stackoverflow com questions 10523780 emberjs disable and enable textfield 所
  • 如何安全地为 Perl 5.8.9 编译 Perl 5.12 模块?

    我想在我的 Perl 5 8 9 中安装 File Fetch 它是 Perl 5 12 中的核心模块 一般来说 我想在回溯的 Perl 中编译和安装未来的模块 因为我无法升级我的 Perl 所以我下载了该模块及其依赖项 遵循依赖关系树是相
  • 在 django 中建立一对多关系

    我正在尝试在 django 中建立一对多关系 在我的模型中 我有一个 Person 类和一个 Group 类 我想要建立的关系是一个 Group 内部可以有 N 个人 并且一个 Group 不能在没有至少一个人的情况下存在 在 MER 图中
  • 将 Cython 中的 numpy 数组传递给需要动态分配数组的 C 函数

    我有一些具有以下声明的 C 代码 int myfunc int m int n const double a double b double c So a是一个常量二维数组 b是一个二维数组 并且c是一个一维数组 全部动态分配 b and
  • 抛出 VS 重新抛出:结果相同吗?

    参考网上的很多文档 特别是关于SO的文档 例如 在 C 中重新引发异常的正确方法是什么 https stackoverflow com questions 178456 what is the proper way to re throw
  • 使用剃刀时关闭WebFormViewEngine?

    我下载了Glimpse http www getglimpse com 今天早上尝试一下 当我单击 视图 选项卡时注意到这一点 它检查所有加载的视图引擎 我发现在哪里RazorViewEngine在 web config 中指定 但我找不到
  • 如何在收到 fetch POST 请求的响应后将用户重定向到页面?

    我正在为一个 Web 应用程序编写代码 该应用程序使用 javascript 的 fetch api 向 node js 服务器发送 POST 请求 成功请求后 服务器会进行重定向响应 该重定向 URL 将在 fetch api 响应正文中
  • 谷歌智能锁与凭证管理 API

    我想为我的网络应用程序实现无摩擦登录过程 经过一番搜索 我发现有两种解决方案 谷歌智能锁 https developers google com identity one tap web get started 凭证管理API https
  • 如何将 bin 文件(512 字节)写入软盘的第一个扇区(扇区 0)?

    如何将 bin 文件写入软盘 虚拟软盘 软盘映像的第一个扇区 我正在尝试启动一个简单的 512 字节引导加载程序 到处都显示 512 字节 的大小 所以我应该已经很好了 附加信息 引导加载程序仅显示一个字符串 我正在学习simple集会 有
  • 使用 UnityContainer 中的接口注册类型

    我正在使用 UnityContainer 并且我想注册一个接口 而不是使用类型 而是使用另一个接口 不幸的是 我无法干净地做到这一点 我有几个常用的接口 它们统一在一个接口中 我需要将它们注册到容器中 代码如下 interface IDev
  • iPhone清除CGContext

    我用这段代码创建了一个带有漂亮阴影的圆圈 我在 iPhone 上使用 MonoTouch net Objective C 答案当然很好 UIGraphics PushContext ctx SizeF shadowSize new Size
  • 过滤罗盘读数

    我正在使用罗盘标题来旋转 MKMapView 旋转有点不稳定 所以我试图像 iPhone 上的 Google 地图一样过滤它 或者似乎做了一些欺骗 我正在尝试使用移动平均公式过滤 iPhone 指南针的读数 但它在 359 和 0 之间的交
  • Android 服务被杀死

    我有一个服务与我的应用程序在同一进程中运行 有时 Android 操作系统决定终止我的服务 可能是由于内存不足 我的问题是 我的应用程序是否会与服务一起被杀死 或者它到底是如何工作的 Thanks 首先请务必阅读 http develope