我的 Android 服务突然停止并创建了一个新服务

2024-02-06

我有一个非常简单的 Android GPS 记录应用程序,它运行一个服务。 Activity只不过是控制服务的启动/停止按钮。单击按钮后,我启动一个新的后台服务(使用 START_STICKY)。然后我关闭活动,服务正常运行。我可以再次运行应用程序来停止服务。

该服务只是将 GPS 坐标记录到文件中。我正在记录每个方法和异常捕获。在某个时刻,可能是几分钟或几小时,我的服务将停止,但 onDestroy 不会被调用,也不会引发异常。日志只是显示我上次的文件写入工作正常,然后什么也没有。我怀疑 GC 正在杀死它,但我认为 START_STICKY 基本上意味着“请尽可能长时间地运行我”。 30秒后,服务的新副本启动(不同的PID),onCreate和onStartService照常调用。

如果/当 Android 终止其父 Activity 或应用程序时,它会终止服务吗?是否有必要在单独的线程中运行服务来防止这种情况?为什么完整的服务生命周期没有完成(onDestroy 没有被调用)?


服务实际上在主线程中运行,如果您所做的工作可能需要一些时间,您应该创建一个新线程。如果您使用意向服务 http://developer.android.com/guide/topics/fundamentals/services.html#ExtendingIntentService而不是常规服务。

我应该补充一点,Android 会杀死占用主线程超过 5(?)s 的进程。锁定主线程会导致 ANR(应用程序未响应),也许这就是您在 Service 中遇到的情况。

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

我的 Android 服务突然停止并创建了一个新服务 的相关文章

随机推荐

  • 在 Python 中使用 Mechanize 获取和捕获 HTTP 响应

    我正在尝试从 python 中的 Mechanize 获取响应代码 虽然我能够获得 200 状态代码 但其他任何内容都不会返回 404 抛出和异常 30x 被忽略 有没有办法获取原始状态码 Thanks 错误会抛出异常 因此只需使用 try
  • 数据类型 date 的日期函数 dateadd 不支持日期部分小时

    当我在 jasper 报告中运行以下查询时 出现异常 net sf jasperreports engine JRException 执行 SQL 语句时出错 Activity Summary Activity Summery Report
  • Ruby on Rails - 数组哈希、多列分组和求和

    我对这个主题有类似的问题Ruby on Rails 数组哈希 按列名分组和求和 https stackoverflow com questions 8500280 ruby on rails hash of arrays group by
  • 具有自动调整单元格大小的 UICollectionView 错误地定位了补充视图

    我正在使用带有流布局的 UICollectionView 并尝试让 collectionView 根据 AutoLayout 约束适当调整单元格的大小 虽然单元格按预期工作 但我添加到 CollectionView 的任何补充视图的布局都遇
  • alpine linux 上的程序段错误。我该如何解决?

    我一直在用 C C 开发 webrtc 数据通道库写了一个程序 https github com hamon in librtcdcpp blob alpine test examples websocket client 2in1 c在
  • Java 7 中是否会包含结构和值类型(如 C# 的)?

    Java 7 中是否会包含结构和值类型 如 C 的 这是 John Rose Oracle JVM 开发人员 关于此提案的博客文章 它已经存在了一段时间 但还没有作为官方 JSR 即使在 java 9 中 这似乎也不太可能发生 http b
  • R 中两个列表的元素组合

    假设我有两个列表 list a lt as list c a b c list b lt as list c d e f 我想递归地组合这些列表 这样结果将是作为向量的组合元素列表 如下所示 1 1 a d 2 1 a e 3 1 a f
  • 从字典中查找单词字谜的最佳算法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我遇到了这样的问题 我有一个列表 它是包含数百万个单词的字典 我输入一个像 OSPT 这样的单词 只有 2 个单词可以组成 STOP 和
  • 从一个表中选择并插入到另一个表中

    我有两张桌子 Table A nid vid 类型 标题 uid Table B id 问题文本 我需要将 Table B 中的记录插入到 Table A 中 我试过这个 INSERT INTO Table A nid vid type t
  • 如何找到原名称已知的重命名文件的新路径?

    考虑以下用例 我正在本地分支上工作 同时在主分支上完成了重构 现在 一些文件 类 已被重命名和 或移动到新位置 合并时 由于缺少类 我收到很多很多导入错误 A B C D E master F G H I J topic In A有我用过的
  • 带箭头键(下一个和后退)的键盘导航用于更改文件名

    我有一堆具有不同文件名的 html 文件 我需要添加一个选项以使用键盘箭头键进行导航 上一个和下一个文件 文件名不是动态的 例如 filename html anotherfile html thirdone html ETC 所以我需要
  • 通过索引检索 JSON 对象的属性?

    假设这个 JSON 对象 var obj set1 1 2 3 set2 4 5 6 7 8 set3 9 10 11 12 set2 属性可以像这样检索 obj set2 有没有办法通过索引检索 set2 属性 它是 JSON 对象的第二
  • 将日期时间转换为毫秒 - C++ - 跨平台

    我想将 20160907 05 00 54 123 格式的字符串转换为毫秒 我知道strptime在 Windows 中不可用 我想在 Windows 和 Linux 中运行我的程序 我也无法使用第三方库 我可以标记字符串并转换它 但是有没
  • 动态规划-硬币变化决策

    我正在复习算法课程中的一些旧笔记 动态规划问题对我来说似乎有点棘手 我遇到一个问题 我们有无限供应的硬币 其中一些面额为 x1 x2 xn 并且我们想要对某个值 X 进行找零 我们正在尝试设计一个动态程序来决定 X 的找零是否可以是否制造
  • Vimdiff 失败并显示“无法读取或写入临时文件”

    我在 Windows 7 上使用 Vim 7 4 我确实有一个自定义 vimrc 文件 但 Vim 和 gVim 都工作正常 当我尝试跑步时vimdiff xxxxx yyyyy 它给出了错误 无法读取或写入临时文件 此问题可能是由 Win
  • PartCover 4.0 仅报告 NUnit 库

    我正在使用 PartCover 4 0 来自Sourceforge 页面 http sourceforge net projects partcover files 最新开发版本 在 Windows 7 x64 上使用 NUnit 2 5
  • javascript滚动到div类的底部

    您好 我正在尝试在 django 中实现一个简单的聊天框 并且想知道如何使用 javascript 滚动到 div 类的底部 基本上 当页面加载时 我希望用户可以看到发送给他们的最新消息而不是最近的消息 我最近不得不做类似的事情 我发现了一
  • 如何在Linux中限制用户命令[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在一个组中有一个用户 demo 我想设置该用户只能运行 10 个命令的策略 例如vim nano cd etc 或者 将策略设置为有权访
  • 将数据从 Google App Engine 导出到 csv

    This 旧答案 https stackoverflow com questions 2810394 export import datastore from to google app engine指向一个链接Google 应用引擎文档
  • 我的 Android 服务突然停止并创建了一个新服务

    我有一个非常简单的 Android GPS 记录应用程序 它运行一个服务 Activity只不过是控制服务的启动 停止按钮 单击按钮后 我启动一个新的后台服务 使用 START STICKY 然后我关闭活动 服务正常运行 我可以再次运行应用