【问题标题】:Android Activity-Lifecycle: Relation between onPause and onDestroyAndroid Activity-Lifecycle: onPause 和 onDestroy 的关系
【发布时间】:2014-09-26 05:00:26
【问题描述】:

onPause 和 OnDestroy 之间的相互关系是什么?为什么在声明 onPause 时,可能不会调用 onDestroy?以及如何确保。问这个答案的原因是:当用户决定终止应用程序时,我正在尝试注销用户,显然,不建议使用 onDestroy,因为它仅在设备内存不足且需要一些实例时调用.而且我不确定这个实现将如何在 onPause 实现中工作

【问题讨论】:

标签: android lifecycle activity-lifecycle


【解决方案1】:

你不应该使用onPause退出,如果你从Activity A登录,如果你尝试在Activity A的onPause方法中退出,那么当您从活动 A 转到另一个活动 B时,用户将自动注销。因为当你去Activity B时,会调用Activity A的onPause方法。

尝试了解Activty的生命周期,为了实验,把Log.d("youActivityName","method name");放在你Activity的方法中,和你的app一起玩/项目,以便您了解何时调用方法。

我建议,使用一个按钮,它将关闭所有活动并从应用程序中注销。

检查此链接: https://stackoverflow.com/a/14002030/4082061

How to close all the activities of my application?

【讨论】:

  • 谢谢!这真的很有帮助
【解决方案2】:

编辑:使用 onDestroy 函数

@Override
protected void onDestroy() {
    super.onDestroy();
    //Code
}

onPause():在系统即将开始恢复之前的活动时调用。这通常用于提交对持久数据的未保存更改、停止动画和其他可能消耗 CPU 的事情等。此方法的实现必须非常快速,因为在此方法返回之前不会恢复下一个活动。 如果活动返回到最前面,则跟随 onResume(),如果对用户不可见,则跟随 onStop()。

onDestroy():在销毁活动之前收到的最后一个调用。这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。

【讨论】:

  • 如已编辑问题中所述,我正在研究在用户终止应用程序时允许应用程序注销用户的方法。显然,不建议使用 onDestroy,因为它是不可预测的,它不会定期调用
  • 我已经使用 onDestroy 方法对注销进行编码,但是,我发现该行为非常不稳定,不会定期调用 onDestroyed,但在某些情况下我假设设备是内存不足
猜你喜欢
  • 2011-11-18
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 2015-05-09
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 2012-07-08
相关资源
最近更新 更多