Context.startForegroundService()在三星设备上未调用Service.startForeground()

9

我在三星设备上后台服务运行方面遇到问题。

Fatal Exception: android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1881)
       at android.os.Handler.dispatchMessage(Handler.java:105)
       at android.os.Looper.loop(Looper.java:164)
       at android.app.ActivityThread.main(ActivityThread.java:6938)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

在这里输入图片描述

当然,在启动服务后,我调用了Service.startForeground(),其他设备都没有问题,但只有三星设备出现问题。

有人知道原因及如何解决此问题吗?

我在Zopim SDK中找到了类似的问题 https://chat.zendesk.com/hc/en-us/community/posts/360004395368-Crash-on-Android-8-in-Android-SDK-1-4-2


@SrikarReddy,请查看屏幕截图。 - Nik
分享你的逻辑,对吧?“启动服务后我调用Service.startForeground()”是什么意思?你是在两次启动服务吗?如果你已经启动了一个服务,为什么还要再次调用startForeground呢? - Srikar Reddy
根据Android 8及更高版本的文档,要在后台模式下运行Service,Service必须调用startForeground()函数。在调用startForegroundService()函数后,系统会等待5秒钟以内调用startForeground()函数。如果Service未调用startForeground(),则系统会使用异常RemoteServiceException终止Service。当然,我按照文档的指示在后台启动了我的Service,所有工作都很正常,除了一些三星设备之外。因此,我不会重复启动我的Service。 - Nik
@Nik:这与三星设备无关。正如你所提到的,问题源于Android 8服务限制。你在startForeground()中显示了通知吗? - aminography
你尝试过@AjayMehta-Rlogical的答案吗?我之前也遇到了同样的问题,而我按照Ajay Mehta所说的方法解决了它。 - Faraz Ahmed
显示剩余14条评论
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接