【问题标题】:Why sometimes my Android App restart without a logic explanation?为什么有时我的 Android 应用会在没有逻辑解释的情况下重启?
【发布时间】:2019-08-02 11:16:28
【问题描述】:

我正在 Android Studio 中开发一个科学应用程序。它运行顺畅。

源代码文件集并不小,但是由于我没有实际的用户界面,所以只有一个活动,没有意图。

所有初始化代码都在OnCreate 中。大多数时候,当他离开前台时,我的应用程序会保留所有数据。

但是,即使手机没有进入 锁屏 并且只有 2 个应用程序正在运行。

在某些情况下,我为另一个应用程序(例如 WhatsApp)通勤并为我的应用程序恢复,但我的数据已经消失了。应用重新启动。

没有错误信息,没有logcat。什么都没有。

大多数情况下,当我锁定屏幕并再次进入时,我所有的应用数据都在那里。

PS:我的方向被锁定了。

PS 2:我已阅读所有相关问题,但没有任何提示。基于answer,我尝试将以下代码放入onCreate

if (!isTaskRoot() {
      && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
      && getIntent().getAction() != null
      && getIntent().getAction().equals(Intent.ACTION_MAIN)) {

      finish();
      return;
    }

对我来说没有任何变化。

更新

我偶然发现了解决方案。可以在我自己的答案中阅读。它与一个活动应用程序的不受欢迎的back 按钮效果有关(阅读herehere)。

对我来说,由于我的应用程序只有一个活动,back 需要像 home 按钮:退出 app 但保留所有活动数据。我的应用程序有一个真正的exit button,用户在其中表明确实想要这样做。

【问题讨论】:

    标签: java android


    【解决方案1】:

    这是我在移动世界以及Android世界开发的第一个应用程序

    在我看来,有些问题只有在对解决方案有提示的情况下才能找到解决方案。这是一个矛盾。一个人不知道,但必须知道才能解决不知道的问题!

    而且,在这种情况下,情况并非如此。没有提示。只是问号。

    以前,我没有注意到任何模式。人们有时会如此自然地行动……然而,突然之间,一分钱就掉了。

    我偶然发现了解决方案。幸运!

    在一百万年后,我想如果有人有一个 activity 并按下 Back 按钮(底部的右键),你实际上会退出应用程序,即使它仍然是一个正在运行的应用程序底部的左键(应用切换按钮)

    当我注意到这一点后,我开始研究另一个重点。我发现了两个来源:Disable back button in androidAndroid - Simulate Home click

    所以解决方案就是让Back 按钮像Home 按钮(底部的中间按钮)。在不丢失应用程序数据的情况下返回home screen

    只需将onCreate(我唯一的activity)放入以下代码即可完成。

     override fun onBackPressed() {
        val i = Intent(Intent.ACTION_MAIN)
        i.addCategory(Intent.CATEGORY_HOME)
        startActivity(i)
      }
    

    【讨论】:

    • active application stack.。错了,“应用程序切换器”不称为“活动应用程序堆栈”。此外,覆盖后退按钮的行为是不好的。
    • 总是见仁见智。我的app 需要一个特定的按钮来退出真正的应用程序,就像旧时的应用程序一样。我不喜欢死板的规则。视觉上效果和back一样,退出app正常显示主屏幕。唯一的区别是,当一个人恢复应用程序时,所有数据仍然存在。
    • Zun,对我来说它工作得非常顺利。我已经在我的应用程序中进行了详尽的测试。如果他真的想退出程序,他只会丢失他会话的应用程序数据。数据负载不足以证明这种内存节省是合理的,这会损害Ux
    • Zun,您会知道 Facebook 应用程序,例如,以完全相同的方式工作。?任何时候,当您按下back 按钮并返回 Facebook 应用程序时,他会完全在同一个屏幕上恢复,完全在同一个滚动位置。即,它们会覆盖正常的 back 行为。
    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2015-12-08
    • 2010-12-05
    相关资源
    最近更新 更多