【问题标题】:Forcibly closing Activity but onDestroy does not get called强制关闭 Activity 但未调用 onDestroy
【发布时间】:2016-01-07 04:25:24
【问题描述】:

当用户通过从所有打开的应用程序中滑动应用程序或按下后退按钮来关闭应用程序时,我有一些资源需要清理(在服务器端)。在上述这些情况下,我的 onDestroy 没有被调用。所以我的问题是

以上场景需要哪种回调方法,为什么?

【问题讨论】:

    标签: android android-activity activity-lifecycle


    【解决方案1】:

    最好放在onPause 方法中,因为onDestroy保证总是被调用,尤其是在你的滑动关闭的情况下。而且,onStop保证在内存不足的情况下被调用。

    Official document about onDestroy 也表示如下;

    注意:不要指望调用此方法作为保存数据的地方!

    【讨论】:

    • 但我不想释放资源,例如当用户切换到另一个应用程序时。我只想为上述情况这样做。那么如何处理上述用例活动(比如在暂停方法中)?
    • 为此,您可以使用服务并检查应用程序正在运行。这是 Messenger 中的常用方法。
    • 可能是我太傻了。但是如果应用程序没有显示在前台并且它在内存中,那么如何获取上述用户事件的信息(与应用程序关闭有关)?应用程序是否有一些状态值或者我需要考虑别的?
    • 只需在onPauseonResume 中发送意图数据(一种isRunning 存储的布尔值)。 Activity 和 Service 之间的通信不在本主题范围内,但此链接可能会有所帮助:stackoverflow.com/q/20594936/361100
    • 我通过stackoverflow.com/questions/9995490/… 解决了一个用例(当用户单击返回按钮时),对于另一个用例,我可以按照建议使用服务和活动通信,但我没有尝试过。因为我想对了现在,原因是因为应用程序不再存在,所以我可以使用服务来查找应用程序是否正在运行。我说的对吗?
    猜你喜欢
    • 2023-04-06
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多