当前位置: 首页 > 知识库问答 >
问题:

绑定服务崩溃,出现“context.startForegroundService()没有然后调用service.startForeground()”错误

司寇瑾瑜
2023-03-14

我目前正在音频播放应用程序,我正在使用一个启动绑定服务来播放音乐在后台。我使用以下代码启动并绑定到服务。

val intent = Intent(context, MusicService::class.java)
context.startService(intent)
context.bindService(intent, serviceConnection, 0)

当播放时,它被提升到前台,当音乐暂停时,它被降级。

// onAudioPlay
service.startForeground(NOTIFY_ID, notification)

// onAudioPause
service.stopForeground(false)
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myplayer, PID: 4380
    android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
        android.app.ActivityThread$H.handleMessage(ActivityThread.java:1775)
        android.os.Handler.dispatchMessage(Handler.java:105)
        android.os.Looper.loop(Looper.java:164)
        android.app.ActivityThread.main(ActivityThread.java:6541)
        java.lang.reflect.Method.invoke(Native Method)
      com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
  • 此服务是绑定服务(不受限制影响)
  • 我从不使用context.startForegroundService()来启动服务。(也不想使用它)
  • 服务从前台降级时不会崩溃,而是在删除通知时崩溃。

为什么服务崩溃了?我做错了什么?如果有人告诉我这里发生了什么,我非常感谢。

共有1个答案

杜翰林
2023-03-14

要展开Udeshuk的答案--任何MediaButtonReceiver的使用(构建挂起的意图或仅接收媒体按钮意图)都可能导致使用startForregroundService调用服务,因为MediaButtonReceiver.onReceive在Oreo上以这种方式启动服务。我在任何地方都没见过这个记录。

 类似资料:
  • 原因:context.startForegroundService()随后没有调用service.startForeground() 我希望服务不显示任何通知给用户和完成它的任务,而不会被杀死。在构建版本>26中,这可能吗?

  • 我需要检查为什么exec函数停止我的php脚本。 我在HTTP查询中调用了“exec”函数中的bat文件(但我遇到了passthru、system和proc_open的问题),2分钟后我得到了一个错误代码500(没有详细信息)。但是我的bat文件总是在后台运行(我可以看到创建的文件…)我是这样使用它的: 在$输出中我什么都得不到,在phperror_log什么都没有...我添加了以下参数: 同样的

  • 我复制了gRPC helloworld示例中粘贴的gRPC服务器。 它开始侦听指定端口中的RPC,但当我使用复制粘贴的客户端调用RPC时,它会崩溃,出现“中止(内核转储)”,在客户端收到错误消息“Endpoint read failed”。 我尝试通过在RPC函数实现中包含一些输出语句来调试它,但执行从未达到目的。 没有其他错误消息,是否有一些标志使故障更详细,以便调试?

  • 严重:初始化连接器[connector[HTTP/1.1-8080]]org.apache.catalina.LifecyCleException失败:尝试为组件[connector[HTTP/1.1-8080]]进行无效的生命周期转换([before_init]),该组件处于状态[INITIALIZED],位于org.apache.catalina.util.LifecyCleBase.inva

  • 我正在使用IntelliJ Idea 2017.2。而我的项目是Gradle构建的多模块项目。我已经给出了我的项目的一个版本。然后它就坠毁了。我重新启动了IntelliJ,得到了以下消息 文件->使缓存无效/重新启动 这次我又犯了一个错误。 我再次尝试项目。但总是得到相同的错误。我搜索了throguh互联网,得到了以下问题。