为什么服务无法启动

时间:2020-04-15 16:54:34

标签: android service

我开始为Android开发,并且遇到有关服务的问题。我对此进行了大量研究,但找不到解决方案。

我正在做一个收集RFID标签信息的应用程序。为此,我正在使用第三方中间件,该中间件处理与RFID读取器的蓝牙连接以及其他事件(如连接,读取,错误等)。因此,我的应用程序创建了一个广播接收器,用于处理中间件发送的所有消息和数据意图。对于这一部分,一切都很好。

问题是我正在尝试使用下面的代码(由中间件文档提供)启动中间件服务,但是它不起作用。

Intent intent = new Intent("com.supplier.middleware.runner");
intent.setPackage("com.supplier.middleware");
startService(intent);

我目前在Android 8.1.0上使用Asus Zenfone MAX M1(ASUS_X00HD)。该文档还介绍了一种停止服务的方法(关闭应用程序时必须使用该方法),并且停止服务的意图也有效。因此,如果我手动启动中间件并尝试以编程方式关闭该中间件,那么它将正常工作。

经过几天的尝试-未成功-解决了此问题,我使用Motorola Moto Maxx(我认为是Android 6),Samsung J1(即Android 5.1.1)和两款智能手机测试了我的应用程序工作正常:当我调用startService时,出现一个通知项;当我调用stopService时,通知项消失了。

由于Android 8,我也尝试使用“ startForegroundService”,但也没有成功。

有没有一种方法可以“监视” startService调用,所以也许我可以跟踪任何错误?我是在做错什么?或者,我是不是在做重要的事情?

1 个答案:

答案 0 :(得分:1)

在Android 8.0后台服务限制中。 https://developer.android.com/about/versions/oreo/background.html 您可以使用 JobIntentService 代替意图服务。可以。