Android:当Android从内存中清除应用程序活动堆栈时,销毁它



我们有包含多个活动的应用程序。

常见的业务逻辑始终在 MainActivity 中运行。从主活动,我们导航到具有特定数据的其他活动(活动 1、活动 2 等(。

效果很好。

但是,如果我们最小化应用程序,然后移动到其他应用程序,请随时等待(近 5 分钟(。然后再次打开(最大化(应用程序,我们的活动显示空数据。

(安卓杀死我们的活动!

是的,我们知道为此目的创建的 SaveInstanceState。但是在我们的应用程序中,这不是最好的解决方案,因为我们有许多包含在 MainActivity 中的操作。如果android杀死了我们的活动,我们希望从MainActivity重新打开应用程序,而不是从Activity1,Activity2,...

我们的主要活动代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState != null) {
        Log.w("MainActivity", "Activities already created, we after activity kill process");
        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();
        return;
    }
}

这是有效的,但我们可以用其他正确的方式做到这一点吗?

不要与框架作斗争。

保存并还原实例状态。 当MainActivity在后台堆栈中时,不要依赖它积极工作(甚至根本不存在(。 将这些后台操作移动到 Service

"正确的方法"是改变你的整个应用程序架构。您的方法的一个问题是配置更改会触发此流,并将用户重定向到MainActivity

您可以

为每个较小的活动设置 android:noHistory="true" 。这样,当您在最小化后返回应用程序时,它将始终从 MainActivity .

编辑:一般来说,你不应该与android框架作斗争,而是根据它来构建你的应用程序。

相关内容

  • 没有找到相关文章

最新更新