我一直在试图做一些类似于truecaller的应用程序,我的应用程序应该在通话挂断后显示屏幕。通过在manifest
文件中注册android.intent.action.PHONE_STATE
隐式广播来实现此目的。Android O:PHONE_STATE广播限制
但由于Android O broadcast limitation,我将应用更改为目标Android O,因此无法正常工作,而我正试图找出该用例的替代解决方案。
在android文档中建议的替代解决方案:Job scheduler
或注册service
与context
。
作业调度程序:由于Job scheduler
优化,接收回调会有一些延迟。因此,如果我们的应用程序屏幕在电话呼叫几分钟后显示,并且每隔几秒查询一次新呼叫记录导致电量耗尽问题,则会影响用户体验。
使用Java中的上下文注册服务:即使应用程序未处于活动状态,我也希望该行为能够正常工作。如果系统杀死了Service
,这将不起作用。
注册前台服务:这需要一直向用户显示通知,这将成为用户的垃圾邮件,并且24/7全天候运行会占用大量资源,从而无法实现广播的全部目的局限性。
请建议备用解决方案,以便用户体验保持不变。
在此先感谢
我们期望更好的东西,因为前台服务需要显示通知。你不觉得这会成为用户的垃圾邮件吗?而且,全天候运行服务会消耗大量资源。 – Bob
没有其他解决方案。 – greywolf82
+1我只想补充 - 通知并不是那么糟糕。例如,LastPass密码管理器为其后台服务24/7显示它,并且它消耗的资源非常少。另外,如果屏幕上有“脸部”,FB信使将显示通知。 –