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

时间:2018-07-20 10:15:26

标签: android android-service

我有2个独立的应用程序A和B。

应用程序B内部具有一项服务,并且某一时刻,应用程序A通过绑定到应用程序B的服务并交换一些消息(使用Messenger)与应用程序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);

1 个答案:

答案 0 :(得分:0)

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