如何防止在导航时重新创建(重新启动和重新加载)活动

时间:2014-01-04 20:29:24

标签: android android-intent navigation-drawer

有一种方法可以防止在导航回来时重新加载活动例如,如果某些活动从数据库加载数据,那么用户每次导航到此活动时等待加载数据都不是一件好事。 / p>

3 个答案:

答案 0 :(得分:1)

关于防止重新加载活动的可能性的简短回答:否。至少在我看来,您应该始终设计应用程序来处理Activity生命周期。当设备的方向改变时,也会发生重新加载(onPause-> onDestroy-> onCreate-> onResume)。每次创建Activity时都会发生CPU和/或内存密集型任务,这很可能会导致用户体验不佳。

一种解决方案可能是让外部类处理数据库加载,并让类可以作为单例访问。我知道这是许多开发人员的劝阻,但与此同时我非常肯定已经读过它在许多Android特定情况下都可以接受。

或者你可以有一个类扩展应用程序。然后Application类可以保留任何会话相关数据。这也可以独立于当前显示的活动来访问数据。

我确信还有很多其他选择,但这是最初想到的。

答案 1 :(得分:0)

在调用活动时设置您要使用的意图类型。 Here is the documentation

对于您的情况,FLAG_ACTIVITY_REORDER_TO_FRONT可能有帮助。

但是在再次阅读您的问题时,我认为您希望保持数据不变并且不想再次加载它。在这种情况下,请扩展Application类。将数据保存在此扩展类的变量中,并在任何您想要的地方使用它。

答案 2 :(得分:0)

您可能希望特别研究Activity Lifecycle Recreating an Activity

通过将活动存储在Bundle onSaveInstanceState(Bundle)方法中,然后使用onRestoreInstanceState从同一Bundle恢复,可以保存第一次显示活动后收集或创建的所有数据。捆绑)方法。