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

Don*_*rty 9 java android release build

我的Android应用程序有一些非常奇怪的"错误",我从Eclipse运行它运行良好,非常完美.

它包含一个登录屏幕,我可以在Eclipse中运行时访问并进入我的主屏幕.当我按下主页并返回到我的应用程序时,它返回到应用程序所在的最后位置(活动).

然而,当我发布一个构建标志并将其部署在设备上时它具有不同的行为,当我按下主页然后返回应用程序时,通过登录屏幕后总会出现登录屏幕.

两个版本中的代码相同,只有一个是使用默认调试密钥库签名而另一个是使用我自己的版本密钥库签名.

有人遇到过这个吗?真的很混乱!

编辑:更多信息:

应用程序目前的工作方式如下:

启动主要活动,然后调用登录活动,登录活动然后移动到我的应用核心活动.

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

所以它似乎真的很奇怪?

Zba*_*ian 4

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

由于 Intent 的启动模式,调试和发布模式之间的“奇怪”活动流程有所不同。当您处于调试状态时,您可以按“运行”按钮来启动主活动。当您处于发布模式时,您安装了该应用程序,然后按“打开”应用程序按钮。

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

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

android:launchMode="singleTask"
Run Code Online (Sandbox Code Playgroud)

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

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