1

我已经将 unity3d 和 vuforia 应用程序移植到 Eclipse。我有一个启动活动和一个扩展活动,它确实扩展了 vuforia 活动并在清单中设置为主要活动。

我有一些应用程序初始化活动,例如 GA 跟踪会话打开并通过请求我自己的服务器来检查新应用程序的版本。

我的问题是我无法在应用程序生命周期中只运行一次这些初始化内容。

当应用程序启动时,它首先加载扩展活动,该活动加载 vuforia 和统一场景,同时显示启动画面,然后当它准备好时,它会进入启动活动,向用户显示一些信息。用户阅读它,然后通过点击再次进入统一活动以获得 3d 场景。我可以将此初始化放在扩展活动中或启动活动中。从功能的角度来看,两者都是有效的。但是,当用户在启动活动和统一活动之间导航时,我会做什么,以前的活动被破坏,下次返回时会调用 onCreate。它发生在它们两个中,所以如果我将我的初始化放在这两个的任何 onCreate 上,它会在用户导航到它们时被多次调用。

到目前为止我已经尝试过: - 以 startActivity 和 startActivityForResult 开始意图,两者的行为相同。- 检查清单以声明不保留历史,正如我在其他一些 smilar 问题上看到的那样 - 在清单中,我将 android:configChanges 用于所有可能的值,以确保由于某些配置更改而不会重新启动活动,但没有帮助 - 尝试使用onSaveInstanceState() 并设置一些简单的布尔值,初始化已经完成。但是当活动再次启动时不会调用 onRestoreInstanceState() 并且也没有将包传递给 onCreate 方法。保存实例确实发生了,我在那里有日志。

此外,当我通过按主页按钮或以编程方式将其置于后台或离开去玩市场并通过按返回按钮从那里返回应用程序时,我的应用程序活动仍然正确加载。因此,只有当我通过调用 startActivity 或 startactivityForResult 从我的一个活动内部转到另一个活动时,它才会被销毁。

我可以想象统一活动需要大量内存,之前可以说销毁以释放,但在这种情况下,我的包应该被保存并传递给 onCreate() 但事实并非如此。

我很困惑,我一直试图弄清楚如何解决这个问题好几个小时。我非常感谢任何帮助。多谢你们。

4

0 回答 0