gpt4 book ai didi

java - Android - 发布签名版本中的不同行为?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:36 24 4
gpt4 key购买 nike

当时我的 Android 应用程序有一些非常奇怪的“错误”,我从 Eclipse 运行它,它运行良好,非常完美。

它包含一个登录屏幕,我可以访问它并在通过 Eclipse 运行时正常进入我的主屏幕。当我按下主页键并返回到我的应用程序时,它会返回到应用程序所在的最后位置( Activity )。

然而,当我发布签名构建并将其部署在设备上时,它有不同的行为,当我按主页并返回到应用程序时经过登录屏幕后,登录屏幕总是出现。

两个构建中的代码是相同的,唯一的区别是一个使用默认调试 keystore 签名,而另一个使用我自己的发布 keystore 签名。

有没有人遇到过这个?真是令人困惑!

编辑:更多信息:

应用程序目前是这样工作的:

启动主 Activity ,然后调用登录 Activity ,然后登录 Activity 移至我的应用程序核心 Activity 。

我还发现它似乎是在安装后的第一次运行时出现问题,如果我运行该应用程序,强制关闭它然后再次运行它然后它可以完美运行,没有任何问题。

所以这似乎真的很奇怪?

最佳答案

我知道这是一个老问题,但这个问题让我有些头疼,我在下面发布解决方案以防有人遇到同样的问题。

由于 Intent 的启动模式,“奇怪”的 Activity 流程在调试和 Release模式之间是不同的。当您处于调试状态时,您按下“运行”按钮以启动主 Activity 。当您处于 Release模式时,您安装了应用程序,然后按下“打开”应用程序按钮。

一旦从不同位置打开应用程序,Intent 将更改并导致重新打开应用程序。最重要的是(由于 Android 的架构)如果您有多个 Activity 流程,例如:Splash -> Login -> Main -> 等,然后您按“主页”并从不同的位置重新打开应用程序,整个 Activity 流程是重新启动,但旧的 Activity 将保留在堆栈中。对我来说,由于单例中的一些变量初始化,这导致了一些问题。

为了解决这个问题,您可以在 AndroidManifest 中为您的 Activity 设置不同的启动模式:

android:launchMode="singleTask"

另外,您可以尝试使用 singleInstancesingleTop。每种启动模式都有不同的行为。

如果您在 Google Play 商店中发布了您的应用程序,则可以重现此问题。在商店中导航到您的应用,然后按“打开”按钮。应用程序启动后,按“主页”按钮并转到“菜单”屏幕并从此处打开您的应用程序。您会看到该应用已重新创建。

关于java - Android - 发布签名版本中的不同行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6877755/

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