“中断”是指诸如接听电话并接听电话,在应用程序上拨打电话,在应用程序顶部接收弹出的whatsapp消息等,这些中断总是由外部应用程序引起的
除了20个以外,我已经在19至25个API中测试了我的应用程序,并且在此API中引发中断的原因是onSaveInstance和onResume事件,或者仅仅是onResume事件。
但是在API 18中,“中断”强制了onStop()。问题是,在我的应用程序中,如果onStop函数满足某些条件,则该应用程序必须完成,而不幸的是,如果此版本中出现“中断”,则情况发生且该应用程序完成了。
是否有任何方法可以迫使应用与其他版本一样对OnSaveInstance,OnResume或onResume做出反应?或以任何方式告诉应用程序onStop()是由外部应用程序引起的?
答案 0 :(得分:1)
不要费心找出onStop()
的“原因”;框架只是通过让您了解活动的Lifecycle来完成其工作。 (如果您发现其他API级别的行为有所不同,可能是因为它们在某些“中断”期间使用了透明的覆盖层或其他内容,因此该活动在技术上仍在屏幕上显示。)
根本原因是应用程序设计问题。当您选择“处理用户的输入”(或您在onStop()
中当前执行的操作)时,您可能需要重新评估。通过选择onStop()
,您会告诉系统“我希望您在活动离开屏幕时运行此程序”,并且由于存在各种设备和API级别,因此发生在很多不同的时间。
请考虑在需要“处理输入”时让用户按下按钮。或者,您可能希望将处理移至Activity Lifecycle的其他“层”;到onResume()/onPause()
或onCreate()/onDestroy()
。