gpt4 book ai didi

java - 应用程序从后台重新启动主要 Activity ,而不是恢复之前的状态

转载 作者:行者123 更新时间:2023-12-01 18:06:02 24 4
gpt4 key购买 nike

如果我从主屏幕启动应用程序(通过点击应用程序图标),那么我会浏览应用程序,然后离开应用程序,当我以相同的方式重新打开应用程序时(通过点击主屏幕上的应用程序图标)屏幕)它将恢复之前的状态并显示我在离开应用程序之前进行的最后一个 Activity 。该部分按预期工作。

问题是这样的:

如果我首先从 Play 商店启动该应用程序或从 apk 安装程序手动启动该应用程序,然后以其他方式重新打开该应用程序(例如,通过点击主屏幕上的应用程序图标),该应用程序将启动该应用程序的一个新实例主要 Activity 并将其添加到上一个导航堆栈(如果我按后退按钮,它将返回到我离开应用程序之前所在的最后一个 Activity )。

我总是希望应用程序从后台打开最后一个 Activity,无论应用程序是如何首次启动的(通过主屏幕或 Play 商店或手动)。我已经在主要 Activity 中尝试过类似的东西:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

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

finish();
return;
}
[...]
}

但是 finish() 调用会使应用程序崩溃。

最佳答案

我实际上找到了finish()导致应用程序崩溃的原因:onDestroy()被调用,它试图取消注册尚未注册的接收器,因此应用程序崩溃了:无法销毁 Activity [...]接收器未注册

所以该代码实际上可以很好地解决我的问题:

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

finish();
return;
}

我只是没有注意onDestroy()

关于java - 应用程序从后台重新启动主要 Activity ,而不是恢复之前的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60557209/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com