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