(相关资料图)
在Android P的所有新增功能中,包括新的导航手势,Slices API和 新的生物识别API,还有一些其他更改可能也会以更微妙的方式发挥作用。其中之一是删除了前台应用程序的“应用程序无响应”(ANR)对话框。当某些因素阻止主UI线程响应时,将出现ANR对话框。在Android Oreo或更低版本中发生这种情况时,会向用户显示ANR对话框,让他们知道。现在,在Android P中,应用程序将崩溃,而不会向用户发出任何通知。
为什么在不告知用户实际情况的情况下使应用程序崩溃?这不一定对用户有好处,但是它迫使开发人员特别注意某些问题,并确保避免该问题。鼓励开发人员不要在前台线程中运行任何程序。在下面链接的源视频中,Google讨论了避免该问题的潜在解决方案,包括AsyncTask API。Android最近对后台服务的限制意味着在这里过渡到服务可能不是一个好主意。如果您想了解更多有关解决此问题的信息,我们建议您收听下面的演讲:
Google的方法很有道理,但是太多了吗?它可能看上去使Android应用程序崩溃的频率降低了,但是如果用户看不到通知,那么开发人员将不得不密切注意其崩溃工具(例如Firebase崩溃报告),而不是直接向用户反馈。如果您是最新P beta版本的开发人员,则可以通过在“开发人员选项”中启用设置来恢复这些崩溃对话框。
这并不是Android P中有关在后台执行应用程序的可见性的唯一更改。如果某些应用程序没有优先级足够高的通知,则Android Oreo会在某些应用程序在后台运行时引入了持久性通知,但是Android P现在完全摆脱了该通知。唯一的区别是ANR对话框不像放置持久性通知那样令人讨厌。