java - Android 服务不会在 Android 8.1 上重新启动
问题描述
我有一个扩展服务类的类。我从我的 MainActivity 启动我的服务,但在关闭 android 8.1 上的应用程序时服务不会重新启动
在我的服务类中,我有以下代码:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//some code
return Service.START_STICKY;
}
我像这样开始我的服务:
MyService myService = new myService();
final Intent seriviceIntent = new Intent(this, myService.getClass());
if (!isMyServiceRunning(myService.getClass())) {
new Thread(new Runnable() {
@Override
public void run() {
this.startService(seriviceIntent);
}
}).start();
}
else {
Log.e("service_log", "service is already running");
}
我的清单文件中也有这个条目
<service android:name=".service.MyService"/>
在 android 7 上可以正常工作,但在 android 8.1 上不行
我已经尝试在没有线程或通过 ui 线程的情况下启动此服务,但两者都没有工作
解决方案
从 Oreo 开始,对服务有一些限制,因此您可能需要查看本指南以将您的服务迁移到 Oreo:
https://developer.android.com/about/versions/oreo/background
或者
看看这个博客:
推荐阅读
- java - 如何使用 Recyclerview 在 android studio 中的视图中制作图像集合
- python - 在每一行中查找唯一值
- spring-boot - 使用 EC2 在 AWS Appmesh 上部署 Spring Boot 微服务
- dialogflow-es - 谷歌助手删除短语
- windows - 在 Windows 环境下的 GithubActions 中运行 cypress
- java - 如何用 Java 中的递归解决这个问题?
- javascript - div innerHTML 未更新
- pimcore - Pimcore 6 CSV 导入
- latex - 如何使文档标题变粗并变大?
- java - Whitelabel 错误页面,而不是缺少必需的参数