【问题标题】:Android App/Activity To Start Fresh Completely every time it starts or resumes?Android 应用程序/活动每次启动或恢复时都要完全重新开始?
【发布时间】:2011-05-12 07:10:51
【问题描述】:

我有一个适用于 Android 的儿童应用程序,该应用程序有一些独特的考虑因素,因为该应用程序基本上没有导航(它适用于年幼的孩子)。我不想通过添加退出/重启按钮来破坏我的应用 UI(在 iPhone 上已经成功)。

我真正需要的非常简单——我希望我的活动/应用程序在每次启动时都能以全新的方式开始。无论是初始加载还是其他什么——基本上任何时候 onResume 被调用我都想要一个全新的应用程序实例。

我最初以为我可以在用户离开时退出/退出/完成应用程序。但是我还没有找到一种不会在启动时导致崩溃的方法。此外,关于这个想法的每个线程/堆栈溢出帖子都充满了人们摇摆手指并说你永远不应该退出 Android 上的应用程序。

如果我无法在 onExit 退出应用程序,是否可以在每次调用 onResume 时重新启动我的活动? (或者那会是一个无限循环?)。

非常感谢任何帮助!

【问题讨论】:

  • 应用程序的“重启”是什么意思?每次重新启动时,孩子们看看应用程序的“开始”是什么?
  • 是的,这正是我的意思。该应用程序没有导航,它在多个游戏中循环。 Navigation + 3 岁通常意味着挫败感,避免它是我们在这个市场上大获成功的原因之一。我完全知道这不是您通常希望 Android 应用程序工作的方式,而且在任何其他情况下我都不会这样做。无论如何,现在看来一切都很好。

标签: java android application-lifecycle onresume


【解决方案1】:

最终通过在 onPause() 中调用 finish() 使其正常工作。

再次,我很欣赏人们所说的“这不是 Android 做事的方式”的建议。在这一点上,我对最佳实践有了很好的理解。对于不寻常类型的用户来说,这是不寻常的情况。

【讨论】:

    【解决方案2】:

    尝试在onResume 中启动您的主要活动,并清除活动堆栈:

    public void onResume() {
        super.onResume();
        startActivity(new Intent(this, MainScreen.class).addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    }
    

    也许这些不是要添加的正确标志,但请查看其他 Intent 标志,这可以满足您的需求!

    intent flags documentation

    【讨论】:

    【解决方案3】:

    在你的重载中你可以试试这个..

    onStop();
    onCreate(getIntent().getExtras());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2021-01-04
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      相关资源
      最近更新 更多