我的 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 服务突然停止并创建了一个新服务 的相关文章

  • java.lang.IllegalArgumentException:此组件要求您指定有效的 android:textAppearance 属性

    我的布局文件之一中有一个 com google android material button MaterialButton 组件 当我使用最新版本的 Material Components 库 com google android mat
  • 如何自定义菜单项的背景颜色?

    我正在尝试定制Toolbar的弹出菜单 现在我无法设置菜单项的背景颜色 我的 styles xml 如下所示
  • 我在布局上看不到任何 FirebaseRecyclerAdapter 项目

    我试图将数据从 Firebase 数据库检索到我的布局 但我看不到任何项目FirebaseRecyclerAdapter在布局中 请帮忙 我按照一个教程展示了如何做到这一点 当我运行应用程序时 我没有看到任何项目 但我可以滚动 public
  • Xamarin Android Webview Javascript

    我正在尝试通过 Xamarin for Android 创建一个移动应用程序 它有一个显示网站的 WebView 问题是正常按钮会触发 但 javascript 事件不会触发 我已经启用了 Javascript 但没有运气 如何在 Andr
  • 从响应中获取标头(Retrofit / OkHttp 客户端)

    我正在使用 Retrofit 与 OkHttp 客户端和 Jackson 进行 Json 序列化 并希望获取响应的标头 我知道我可以扩展 OkClient 并拦截它 但这发生在反序列化过程开始之前 我基本上需要的是获取标头以及反序列化的 J
  • 如何正确释放Android MediaPlayer

    我正在尝试向我的 Android 应用程序添加一个按钮 当点击该按钮时它会播放 MP3 我已经让它工作了 但没有办法释放 mediaPlayer 对象 因此即使在我离开活动后它仍然会继续播放 如果我在react 方法之外初始化MediaPl
  • 将现有 VARCHAR 列与 Room 结合使用

    我正在尝试将现有的数据库与 Android Room 一起使用 但是 我的一个表有一个 VARCHAR 列 Room 似乎只支持 TEXT 不支持 VARCHAR 而且 sqlite 不允许修改列类型 那么 有没有办法使用Room中现有的带
  • 自定义首选项中的android首选项水平分隔线?

    我创建了自己的自定义首选项对象来扩展首选项 我创建它们只是因为这些自定义数据类型没有首选项 一切正常 但我的自定义首选项没有相同的外观 因为它们缺少系统首选项对象具有的水平分隔线 我已经查找了创建水平分隔线的代码 但我找不到它是在哪里完成的
  • Bitmap.getPixels() 中的 IllegalArgumentException

    我想将数据从位图复制到int using getPixels 这是我当前的代码 int pixels new int myBitmap getHeight myBitmap getWidth myBitmap getPixels pixel
  • Dialog.setTitle 不显示标题

    我正在尝试向我的对话框添加自定义标题 但是每当我运行我的应用程序时 它都不会显示标题 我创建对话框的代码是 final Dialog passwordDialog new Dialog this passwordDialog setCont
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • 当它的父级是 ConstraintLayout 时设计 CardView 吗?

    我在编辑包含Relativelayout的Cardview内的RelativeLayout时搞砸了 ConstraintLayout会将相对布局的wrap content更改为0并添加工具 layout editor absoluteX 1
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • Android 构建发布失败,原因为:java.lang.ArrayIndexOutOfBoundsException:213(pr​​oguard 问题)

    我的项目使用调试构建变体构建得很好 但使用发布变体 Android Studio 会抛出 引起原因 java lang ArrayIndexOutOfBoundsException 213 可能是什么问题 如果我设置minifyEnable
  • Mipmap 与可绘制文件夹[重复]

    这个问题在这里已经有答案了 我正在使用 Android Studio 1 1 Preview 1 我注意到 当我创建一个新项目时 我得到以下层次结构 不同 DPI 的 Mipmap 文件夹 不再有不同 DPI 的可绘制文件夹 我应该将所有资
  • Dagger 2 没有生成我的组件类

    我正在使用 Dagger 2 创建我的依赖注入 几个小时前它还在工作 但现在不再生成组件 这是我创建组件的地方 public class App extends Application CacheComponent mCacheCompon
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • Android 后台倒计时器

    我有一个 Android 应用程序 它管理一个倒计时器 类 CountDownTimer 它显示在应用程序屏幕中 以显示到达 00 00 还剩多少时间 我现在的问题是 当我按主页按钮或启动另一个应用程序时 应用程序 计时器不会在后台运行 所
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne
  • 有没有任何代码可以在android中设置壁纸而无需裁剪和缩放?

    我正在创建一个画廊应用程序 我的第一个应用程序 这是我的代码 Bitmap bmd BitmapFactory decodeStream is try getApplicationContext setWallpaper bmd catch

随机推荐

  • 在 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 然后我关闭活动 服务正常运行 我可以再次运行应用