android - 粘性服务被杀死并重新启动计划为 1000 毫秒,但从未重新启动
问题描述
我有一个正在运行的粘性服务,有时会被一条消息杀死:
2018-11-19 06:54:42.208 1602-3282/? I/ActivityManager: Force stopping com.example.myapp appid=10309 user=0: from pid 16033
2018-11-19 06:54:42.208 1602-3282/? I/ActivityManager: Killing 14900:com.example.myapp/u0a309 (adj 200): stop com.example.myapp
2018-11-19 06:54:42.210 1602-3282/? W/ActivityManager: Scheduling restart of crashed service com.example.myapp/.MyService in 1000ms
2018-11-19 06:54:42.217 1602-3282/? I/ActivityManager: Force stopping service ServiceRecord{ceedda0 u0 com.example.myapp/.MyService}
但是在 1000 毫秒之后似乎什么都没有发生。
我从哪里开始调查?
来自AndroidManifest.xml
:
<service
android:name=".MyService"
android:enabled="true">
</service>
解决方案
确保您的服务接受null
意图,并在接收到意图时恢复它正在执行的操作null
。看这里
如果您在使用华为手机时遇到此问题,您应该知道这是一个已知问题。华为手机的安卓操作系统一旦被杀,就不会自动重启后台服务,尽管谷歌已经声明了粘性服务。参见例如:
推荐阅读
- sql - 对子查询求和并按不同列分组
- android - 即使片段被破坏,我如何保持 livedata 在视图模型中运行?
- flask - 使用烧瓶在 Heroku 上部署项目后的应用程序错误
- java - Artemis 集群的一般 SSLEngine 问题
- c++ - 在 Windows 中激活可输入框时获得通知的任何方式
- replace - SAS:替换字符串中不同数量的前导连续符号
- python - 来自熊猫的 Python 直方图
- swift - 使用 Xcode 12 访问 SwiftUI 中的 ViewModel 字段:“访问安装在视图之外的状态值”
- excel - 有没有办法使用单元格的格式化输出,而不是未格式化的值?
- ios - 如何在没有 segue 的情况下从 Viewcontroller 移动到 TabBarController