【问题标题】:Inconsistency with noHistory attribute in Android 4.0.3与 Android 4.0.3 中的 noHistory 属性不一致
【发布时间】:2012-04-12 12:39:26
【问题描述】:

我将属性 noHistory=true 用于我不想保留在后台堆栈中的活动。它在 Android 2.3.3 上运行良好,但在 4.0.3 上有一个奇怪的行为。 当屏幕进入睡眠状态并且我将其唤醒时,noHistory=true 的活动消失了!

这里发生了什么?屏幕唤醒时活动是否完成?我是否以错误的方式使用 noHistory?

【问题讨论】:

    标签: android android-activity android-4.0-ice-cream-sandwich


    【解决方案1】:

    我今天刚遇到同样的问题,我在这里找到了解决方案:

    Android: how to return to Activity with "noHistory" attribute after onStop?

    实际上,在 noHistory 设置为 true 的情况下,当屏幕进入睡眠状态时,您的 Activity 会从堆栈中移除,并且在屏幕唤醒时不会恢复。

    我从布局 xml 文件中删除了 noHistory=true,并在我的活动调用另一个活动时调用了 finish():

    Intent intent = new Intent();
    intent.setClass(this, MainActivity.class);
    this.startActivity(intent);
    finish();
    

    成功了!单击后退按钮时,上一个活动没有出现。

    我不确定这个问题是否发生在 Android 2.x 上,但我确信现在在 Android v2.x 和 Android v4.x 上都可以正常工作

    【讨论】:

    • 这就是我最终所做的。我仍然不明白 4.x 上的这种行为。当屏幕进入睡眠状态时,没有理由从堆栈中删除活动..
    • 当屏幕关闭时,活动暂停。我在 Android 4.x 下观察到的是,很快,系统要求完成活动(调用 onDestroy() 方法)。 Activity 完成后,Android 会将其从堆栈中移除。
    • 我之前的评论不完整:屏幕关闭时,活动暂停。我在 Android 4.x 下观察到的是,在它之后很快,系统要求完成活动(调用 onDestroy() 方法)。 Activity 完成后,Android 会将其从堆栈中移除,这很正常。所以问题是:为什么活动被破坏了?在我看来,Android 4.x 对暂停的活动更加“激进”,并迅速杀死它们以恢复内存。
    【解决方案2】:

    可能与屏幕进入睡眠时调用 onPause() 的事实有关。

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-08
      • 2017-06-14
      • 1970-01-01
      • 2015-06-05
      • 2014-02-17
      相关资源
      最近更新 更多