通过OTA安装,当最小化并重新进入时,应用程序从启动开始

时间:2011-10-24 08:29:04

标签: android install ota

简单地说,我使用Splash,Home,Child1和Child2编写了一个应用程序,其中包含以下流程:Splash - >首页 - > Child1 - > CHILD2。我们可以从Child2返回到Child1,从Child1返回到Home,然后从Home返回到退出app。

听起来很简单。我可以正确浏览这些屏幕。

通过OTA安装应用程序时出现问题。输入Splash后 - >首页 - > Child1 - > CHILD2。保持Child2,我按HOME按钮以最小化应用程序,并通过选择应用程序图标重新进入应用程序。但是当重新进入app时,它不会在Child2上恢复,而是从Splash开始 - >家。我无法理解这里发生了什么。它应该在Child2上恢复。

更令人惊讶的是,在主屏幕上,当我按BACK按钮存在app时,现在Child2恢复(o_O)。从Child2开始,现在我可以回到Child1,回到Home,再回到现有应用程序。

当我通过OTA安装应用程序时会发生所有这些问题,但是当我通过电缆安装时应用程序正常工作。

谁能告诉我在我的情况下会发生什么?任何帮助表示赞赏

非常感谢。

P / S:我在Nexus 1(Android 2.2)和Nexus S(Android 2.3.x)上测试时遇到此错误

编辑:偶CNN app for Android仍有此问题......是否属于操作系统?

2 个答案:

答案 0 :(得分:0)

看一下你的评论,一旦你开始一个新的活动,就会终止你的活动..

E.g。如果你这样做:

startActivity(intent);
finish(); // THIS WILL KILL THE ACTIVITY -> MAKING IT UNREACHABLE

启动新活动的活动正在被杀死,使用后退按钮无法访问。

删除

finish(); // REMOVE THIS TO KEEP IT ON THE ACTIVITY STACK

调用startActivity(intent)后,所有活动都应保留在内存中。因此,当你回去时,它们将是可达的。注意:对于Splash,你应该确实调用finish(),因为你不想在成功启动后回到Splash活动!

答案 1 :(得分:0)

我想这与task affinity有关。而且它不只是CNN应用程序,所有应用程序的行为都是这样的,因为一些开发人员(像我一样!)不理解任务概念的工作原理。我不会骗你,即使我一直不理解这一点。

我相信这是因为,当您从市场推出应用时,您的应用会成为市场任务的一部分。因此,您有一个“属于”市场任务的实例。您可以正常导航。当你按Home键时会发生所有问题......

如果您从启动器启动活动,则启动应用程序的任务,为您提供应用程序的2个“实例”,一个属于上一个市场任务,另一个属于你自己的应用程序(你自己的任务的根源)。

在这项新任务中,您可以导航回来,最终您将到达上一个任务,该任务包含您应用的另一个实例。您将到达离开的位置(考虑活动的常规启动模式)。有时,这很奇怪,因为我们通常认为一个应用程序只有一个实例,当它不是它的工作方式时,也不是它应该如何工作。我在Windows中打开了两次打开两个应用程序的情况,我比较松散地进行了比较。在Android中,这个类比是类似的(至少对我而言)。

当您从其他应用启动应用时,当任务概念感觉自然时,这一切都很好。

但是,在这种情况下它会变得奇怪,因为当我们从Market启动活动时,我们希望实例与Launcher中的实例相同(从那里启动时)。我们自然不希望用于下载应用程序的Market会拥有我们安装的应用程序,并且我们(显然)想要单独使用Market应用程序(我认为市场不应该拥有任务)使用“打开”按钮时。)

要解决这个问题,我相信你可以摆弄allowTaskReparenting。但是,如果它真的导致了这个问题,我不推荐它,因为这可能会破坏任务系统的其他合法用途。

最后,这就是我 相信 任务的工作方式,这就是我对此问题来源的猜测。我可能是错的,所以请原谅我,如果这个答案以后变得无用(如果你找到另一个解决这个问题的原因)。

祝你好运!