java stopself_然后,即使我停止了服务,Context.startForegroundService()也没有调用Service.startForeground()...
所以我的应用程序有一些触发服务和通知的远程操作 . 在调用 startForegroundService 和服务尝试启动通知的时间之间,事情可能会发生变化,因此服务会再次检查事物的状态,然后决定要做什么 .
因此,如果我的服务决定它不需要运行,它将调用:
stopForeground(true);
stopSelf();
但由于某些原因,这似乎不起作用,因为我在进行这些调用后几乎立即得到此异常 .
11-16 13:34:23.488 15099-15099/mypackage E/AndroidRuntime: FATAL EXCEPTION: main
Process: mypackage, PID: 15099
android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1768)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
那我怎么解决这个问题呢?
谢谢 .
编辑:
我创建了一个示例项目,当Activity启动时它所做的就是调用 startForegroundService 然后它在服务上执行此操作:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG,"start");
stopForeground(true);
stopSelf();
return super.onStartCommand(intent, flags, startId);
}
它崩溃了,无论我是否使用 stopForeground(true) .
编辑:这似乎解决了它,但似乎真的很丑,必须创建一个假通知只是为了取消它 .
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG,"start");
String CHANNEL_ID = "my_channel_01";
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("My notification")
.setContentText("Hello World!");
startForeground(-1,mBuilder.build());
stopForeground(true);
stopSelf();
return super.onStartCommand(intent, flags, startId);
}
java stopself_然后,即使我停止了服务,Context.startForegroundService()也没有调用Service.startForeground()...相关推荐
- java stopself_如何正确停止前台服务?
我不知道它是否正确,但在我的应用程序中,我正在停止前台服务,它可以工作.请检查代码 private void stopForegroundService() { // Stop foreground ...
- java executorser 停止_Java使用ExecutorService来停止线程服务
使用ExecutorService来停止线程服务 之前的文章中我们提到了ExecutorService可以使用shutdown和shutdownNow来关闭. 这两种关闭的区别在于各自的安全性和响应性 ...
- 【Centos】Docker停止容器服务后,磁盘I/O仍然迟迟不下降。(未解决)
记录 前言 问题复现,故障演练 准备工作 dcim-local演练过程 系统日志message 结论 前言 安装了docker的服务器只运行了一个容器服务,停止容器服务后,磁盘I/O仍然迟迟不下降.对 ...
- Java的jar文件安装成windows 服务
Java的jar文件安装成windows 服务: 1.下载:nssm,复制到jar文件目录下 2. jar文件目录下创建bat文件[run.bat],内容为[java -jar 文件名.jar] 3. ...
- 启动和停止MySQL服务
1. 启动MySQL服务 启动MySQL服务的命令为: /etc/init.d/mysqld start 命令执行后如图7-5所示,表示启动MySQL服务成功. (点击查看大图)图7-5 启动 ...
- 闹乌龙!京东云辟谣:停止云服务?根本没那回事儿
2月9日晚6点左右,一条以"传京东云服务将关闭 ,28日后停止技术支持 "为标题的微信开始在朋友圈中疯转,并引起了许多云服务商的强烈关注. 这条新闻的起源于是京东云发布的一条声明, ...
- 【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作...
准备 使用框架搭建完成项目,包含OF.WinService项目. 了解Window Service 和定时服务相关知识. 一.添加一个定时服务 第一步:了解项目结构 第二步:创建一个新的Job 第三步 ...
- mysql停止主从_不停止mysql服务配置主从
不影响主库线上的服务前提下,增加从库,前提是线上的主库配置中已经开启binlog并且指定了server-id. linux主192.168.0.70 版本Centos6.7 nginx1.10 php ...
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...
最新文章
- python自动测试p-Python自动化测试
- zend studio 9.0汉化
- 微软一站式示例代码库 2012 年2月示例代码更新。8个全新示例为您的开发保驾护航...
- Web前端好学吗 学完之后能干什么
- java类 连接时机_java类的加载时机
- Oracle IMP数据时报20001错误
- bzoj 3709: [PA2014]Bohater
- 批处理之计划任务at和schtasks
- H5实现点击图片放大功能
- Linux Deploy 2.0 中文,Linux Deploy:在Android上部署Linux
- mac过热_如何阻止Mac过热
- 读书笔记5.1——《让数字说话:审计,就这么简单》:孙含晖
- minikube start命令的国内使用方法
- 全球及中国阻力带行业市场前瞻及投资竞争力分析报告2022-2027年
- j2ee与j2se对比
- 喜报!字根科技牵手荣之联,提供错别字检测解决方案
- 如果你觉得累,这三个“高内耗”行为,一定要戒掉!
- 数据访问安全代理 CASB
- KubeEdge环境搭建(支持网络插件flannel)
- L2范数-欧几里得范数
热门文章
- apache lucene_Apache Lucene基础教程
- junit runner_了解JUnit的Runner架构
- junit测试报告生成_这是东西:jUnit:动态测试生成
- 49自动化测试中最常见的硒异常
- 使用密钥加密码加密_创建基于密码的加密密钥
- mapreduce 算法_MapReduce算法–了解数据联接第1部分
- 反序列化 jackson_使用Jackson和Super类型令牌的Json反序列化
- 信守承诺:JAX-RS API的基于合同的测试
- 使用Gradle的maven-publish插件发布快照
- JPA和Hibernate级联类型的初学者指南