【问题标题】:Android API 18 reacts to "interruptions" with onStop eventAndroid API 18 通过 onStop 事件对“中断”做出反应
【发布时间】:2018-08-29 15:53:52
【问题描述】:

我所说的“中断”是指接听电话并接听电话、将电话放在应用程序上、在应用程序顶部接收弹出的 whatsapp 消息等等,而中断总是由外部应用程序引起的.

我已经在 19 到 25 的 API 中测试了我的应用,除了 20 之外,在这个 API 中,中断触发的是 onSaveInstance 和 onResume 事件,或者只是 onResume 事件。

但在 API 18 中,“中断”会强制执行 onStop()。问题是,在我的应用程序中,如果在 onStop 函数上满足某些条件,则应用程序必须完成,如果“中断”出现在此版本中,则条件发生并且应用程序完成。

是否有任何方法可以强制应用像其他版本一样使用 OnSaveInstance、OnResume 或仅使用 onResume 做出反应?或者任何方式告诉应用 onStop() 是由外部应用引起的?

【问题讨论】:

    标签: android events android-version


    【解决方案1】:

    不要费心去弄清楚是什么“导致”了onStop();该框架只是通过让您了解活动的Lifecycle 来完成其工作。 (如果您发现其他 API 级别的行为不同,可能是因为它们在某些“中断”期间使用了透明覆盖或其他东西,因此从技术上讲,活动仍然在屏幕上)。

    根本原因是应用程序设计问题。当您选择“处理用户的输入”(或您当前在 onStop() 中所做的任何事情)时,您可能需要重新评估。通过选择onStop(),您是在告诉系统,“我希望您在活动离开屏幕时运行它”,并且由于存在各种各样的设备和 API 级别,这可能发生在许多地方不同的时间。

    考虑让用户在“处理输入”时按下按钮。或者,您可能希望将处理移动到Activity Lifecycle 的不同“层”;可能是onResume()/onPause(),或者onCreate()/onDestroy()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 2021-12-26
      • 2018-09-11
      • 1970-01-01
      • 2017-12-16
      相关资源
      最近更新 更多