【问题标题】:Close all Activities when the app returns from being in the background当应用从后台返回时关闭所有活动
【发布时间】:2016-05-23 20:57:54
【问题描述】:

在我的应用中重要的是,当用户按下主页按钮并且应用进入“背景”时,应用会在下次打开时恢复到登录屏幕。

我尝试过使用

 android:noHistory 

在清单中,但这意味着当按下活动时,它也会恢复到登录屏幕,所以不好。我也尝试过使用

android:clearTaskOnLaunch="true"

在我最初的活动中,但这似乎没有任何效果。我没有完成()第一个活动,所以我不确定为什么这不起作用。

谁能帮忙解决这个问题。

【问题讨论】:

  • 为什么重要?看起来您不了解 Android 的工作原理,并且正试图积极应对它。应用程序不会被主页按钮“关闭”。 Android 也有这样的原则,即保持应用程序实际上从未关闭的错觉 - 它们应该始终处于打开状态并准备好使用,这就是为什么您通常要求登录一次并将其存储在例如帐户管理器中的原因。
  • 哇,这很重要,因为为了安全起见,如果应用程序进入后台并且非用户抓住设备并尝试打开应用程序,它应该恢复到登录屏幕,所以这非常重要由于应用程序中包含的数据是敏感数据,我在问题标题中清楚地说明了应用程序在后台,所以你知道我所说的“关闭”是什么意思,但如果不清楚,我会编辑它。仅供参考,并非所有登录的应用程序都具有相同的功能,所以说应用程序应该要求登录一次并存储是一个巨大的假设
  • PS 我不是来“反对”安卓工作的,我只是对应用有要求,所以你的评论非常不准确。

标签: android android-activity activity-finish


【解决方案1】:

我通过使用得到了这个工作

 android:clearTaskOnLaunch="true"

原来我的根活动中没有它,这是因为我有第二个登录屏幕,根据您之前是否登录过,它要求的详细信息较少。

虽然它完全按照我的意愿工作,但显然使用这个“Android”功能是不正确的,因为当按下主页按钮并且我的应用程序应该跟随其他人时,我会通过清除任务(活动)来“反对”android对“应用程序”应该做什么的看法。谁知道!

【讨论】:

    【解决方案2】:

    为什么不使用 onPause() 方法?每次 Activity 进入后台时都应该调用它。

    比如:

    @Override
    public void onPause(){
        super.onPause();
        finish();
    }
    

    由于您的应用程序一次只能有一个 Activity 处于活动状态,因此您不必担心其他活动仍然处于活动状态。

    【讨论】:

    • 太棒了,就像一个魅力,仅供参考,只是缺少 super.onPause();谢谢!
    • 这是一个的想法。任何对话框(或其他活动)都会导致 onPause() 被调用并关闭您的应用程序。您应该在清单中使用 launchMode 选项。
    • 应该也有和noHistory一样的问题,即:“当回按活动时,它也恢复到登录屏幕,所以不好”
    • 你的权利是的,对不起马塞尔,不是我要找的答案。我会使用“singleTask”@adelphus 吗?你能写一个答案吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多