Android服务绑定失败,除非应用程序在后台打开(One Plus 5)

问题描述 投票:0回答:1

我有2个独立的应用A和B.

应用程序B内部有一个服务,应用程序A通过绑定到B的服务并交换一些消息(使用Messenger)与App B进行通信。

在几乎所有设备上,此过程完全正常。但是,在OnePlus 5设备上,每当A尝试绑定B的服务时,它总是会失败,除非B已经打开并且位于后台。如果从任务抽屉中刷B(将其删除),服务绑定将再次失败。

当我说服务绑定失败时,我的意思是context.bindService()返回false。到目前为止,我只注意到OnePlus 5设备上的这种行为。

这是否表明单独使用OnePlus 5设备有问题?或者还有其他可能导致此问题的事情。

如果它有帮助,这就是我绑定到服务的方式:

Intent intent = new Intent();
intent.setComponent(new ComponentName(packageNameOfB, classNameOfBService));
MyServiceConnection connection = new MyServiceConnection();
context.bindService(intent, connection, Context.BIND_AUTO_CREATE);
android android-service
1个回答
1
投票

此行为是由OnePlus设备中的电池优化功能引起的。这可以通过禁用此功能来解决。该功能出现在“设置 - >电池 - >电池优化 - >溢出菜单中的高级优化(三点菜单) - >禁用高级优化”中。这将解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.