我正在创建一个具有音频通话功能的 Android 应用程序(Java 代码)。我设法使用 webRTC 框架使其工作。我想让我的音频通话表现得像 WhatsApp 和 Messenger,即使用户从应用历史记录中停止应用或开始使用其他应用,这些应用也会保持音频通话运行。
因此,我决定将 webRTC 代码从 Activity 迁移到 Foreground Service。我的音频通话 Activity 处理 UI,显示朋友照片、姓名、通话计时器……所以我必须通过绑定和发送 android.os.Message 对象在我的 Activity 和我的前台服务之间进行通信。
使用 SAMSUNG 设备时一切正常,如果我终止应用程序,我可以通过单击前台服务的通知返回呼叫活动,并且音频呼叫会一直工作直到我挂断。
当我使用小米设备(redmi note7)时出现了我的问题,如果我杀死该应用程序,音频通话停止,导致我的前台服务重新启动。即使从设置中启用“自动启动”。
我在这里搜索了一个解决方案,但我找到的所有答案都不能满足我的需要,因为我不能只接受我的服务被重新启动。如果我想恢复语音通话,我必须重新给朋友打电话!
那么问题来了:如何防止小米、华为、OPPO……设备重启前台服务?
WhatsAPP、Messenger、Instagram 等就是这种情况。